--- ipmitool-1.8.11/lib/ipmi_sel.c.orig 2009-02-25 21:38:52.000000000 +0100 +++ ipmitool-1.8.11/lib/ipmi_sel.c 2012-11-08 12:25:42.000000000 +0100 @@ -578,13 +578,14 @@ ipmi_get_event_desc(struct ipmi_intf * i ((rec->sel_type.standard_type.event_data[0] & DATA_BYTE2_SPECIFIED_MASK) && (evt->data == rec->sel_type.standard_type.event_data[1])))) { - *desc = (char *)malloc(strlen(evt->desc) + 48); + unsigned evt_desc_len = (evt->desc) ? strlen(evt->desc) : 0; + *desc = (char *)malloc(evt_desc_len + 48); if (*desc == NULL) { lprintf(LOG_ERR, "ipmitool: malloc failure"); return; } - memset(*desc, 0, strlen(evt->desc)+48); - sprintf(*desc, "%s", evt->desc); + memset(*desc, 0, evt_desc_len+48); + snprintf(*desc, evt_desc_len+48, "%s", evt_desc_len ? evt->desc : ""); return; } evt++;