|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
diff --git a/plugins/ipmidirect/ipmi.cpp b/plugins/ipmidirect/ipmi.cpp
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
index f6745cf6..3b4918de 100644
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
--- a/plugins/ipmidirect/ipmi.cpp
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+++ b/plugins/ipmidirect/ipmi.cpp
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
@@ -1929,7 +1929,12 @@ cIpmi::AllocConnection( GHashTable *handler_config )
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
char user[32] = "";
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
char passwd[32] = "";
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
char *value;
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
- struct hostent *ent;
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ struct addrinfo hints, *servinfo = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ char portnumber_string[4];
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ memset(&hints, 0, sizeof(hints));
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ hints.ai_family = AF_UNSPEC;
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ hints.ai_socktype = SOCK_STREAM;
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
// Address
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
addr = (const char *)g_hash_table_lookup(handler_config, "addr");
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
@@ -1941,16 +1946,16 @@ cIpmi::AllocConnection( GHashTable *handler_config )
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
}
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
stdlog << "AllocConnection: addr = '" << addr << "'.\n";
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
- ent = gethostbyname( addr );
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ (void)sprintf(portnumber_string, "%d", lan_port);
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
- if ( !ent )
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ if (getaddrinfo(addr, portnumber_string, &hints, &servinfo) != 0)
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
{
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
stdlog << "Unable to resolve IPMI LAN address: " << addr << " !\n";
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
return 0;
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
}
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
- memcpy( &lan_addr, ent->h_addr_list[0], ent->h_length );
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
- unsigned int a = *(unsigned int *)(void *)ent->h_addr_list[0];
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ memcpy(&lan_addr, servinfo->ai_addr, servinfo->ai_addrlen);
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ unsigned int a = *(unsigned int *)(void *)servinfo->ai_addr;
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
stdlog << "Using host at "
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
<< (int)(a & 0xff) << "."
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
@@ -1958,6 +1963,8 @@ cIpmi::AllocConnection( GHashTable *handler_config )
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
<< (int)((a >> 16) & 0xff) << "."
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
<< (int)((a >> 24) & 0xff) << ".\n";
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+ freeaddrinfo(servinfo);
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
+
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
// Port
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
lan_port = GetIntNotNull( handler_config, "port", 623 );
|
|
![](https://seccdn.libravatar.org/avatar/238a9a2d5b52f1b4d56b0c72d18e7b3c311a81ac7a0546894037bc6d82828b5c?s=16&d=retro) |
d20fcae |
|