diff --git a/ipmitool/lib/ipmi_dcmi.c b/ipmitool/lib/ipmi_dcmi.c index f62f404..847cff6 100755 --- a/ipmitool/lib/ipmi_dcmi.c +++ b/ipmitool/lib/ipmi_dcmi.c @@ -494,6 +494,13 @@ ipmi_dcmi_prnt_oobDiscover(struct ipmi_intf * intf) s->hostname); return -1; } + if (host->h_addrtype != AF_INET) { + lprintf(LOG_ERR, + "Address lookup for %s failed. Got %s, expected IPv4 address.", + s->hostname, + (host->h_addrtype == AF_INET6) ? "IPv6" : "Unknown"); + return (-1); + } s->addr.sin_family = host->h_addrtype; memcpy(&s->addr.sin_addr, host->h_addr, host->h_length); } diff --git a/ipmitool/lib/ipmi_tsol.c b/ipmitool/lib/ipmi_tsol.c index 62e043a..be53236 100644 --- a/ipmitool/lib/ipmi_tsol.c +++ b/ipmitool/lib/ipmi_tsol.c @@ -437,6 +437,13 @@ ipmi_tsol_main(struct ipmi_intf * intf, int argc, char ** argv) intf->session->hostname); return -1; } + if (host->h_addrtype != AF_INET) { + lprintf(LOG_ERR, + "Address lookup for %s failed. Got %s, expected IPv4 address.", + intf->session->hostname, + (host->h_addrtype == AF_INET6) ? "IPv6" : "Unknown"); + return (-1); + } intf->session->addr.sin_family = host->h_addrtype; memcpy(&intf->session->addr.sin_addr, host->h_addr, host->h_length); } diff --git a/ipmitool/src/plugins/lan/lan.c b/ipmitool/src/plugins/lan/lan.c index 9ef251c..e088479 100644 --- a/ipmitool/src/plugins/lan/lan.c +++ b/ipmitool/src/plugins/lan/lan.c @@ -2045,6 +2045,13 @@ ipmi_lan_open(struct ipmi_intf * intf) s->hostname); return -1; } + if (host->h_addrtype != AF_INET) { + lprintf(LOG_ERR, + "Address lookup for %s failed. Got %s, expected IPv4 address.", + s->hostname, + (host->h_addrtype == AF_INET6) ? "IPv6" : "Unknown"); + return (-1); + } s->addr.sin_family = host->h_addrtype; memcpy(&s->addr.sin_addr, host->h_addr, host->h_length); } diff --git a/ipmitool/src/plugins/lanplus/lanplus.c b/ipmitool/src/plugins/lanplus/lanplus.c index 03ed199..acf2410 100644 --- a/ipmitool/src/plugins/lanplus/lanplus.c +++ b/ipmitool/src/plugins/lanplus/lanplus.c @@ -3387,6 +3387,13 @@ ipmi_lanplus_open(struct ipmi_intf * intf) session->hostname); return -1; } + if (host->h_addrtype != AF_INET) { + lprintf(LOG_ERR, + "Address lookup for %s failed. Got %s, expected IPv4 address.", + session->hostname, + (host->h_addrtype == AF_INET6) ? "IPv6" : "Unknown"); + return (-1); + } addr.sin_family = host->h_addrtype; memcpy(&addr.sin_addr, host->h_addr, host->h_length); }