diff options
Diffstat (limited to 'lib/ipmi_session.c')
-rw-r--r-- | lib/ipmi_session.c | 58 |
1 files changed, 27 insertions, 31 deletions
diff --git a/lib/ipmi_session.c b/lib/ipmi_session.c index 4855bc4..70a3521 100644 --- a/lib/ipmi_session.c +++ b/lib/ipmi_session.c @@ -99,13 +99,8 @@ print_session_info_csv(const struct get_session_info_rsp * session_info, buffer, 16)); - printf(",%02x:%02x:%02x:%02x:%02x:%02x", - session_info->channel_data.lan_data.console_mac[0], - session_info->channel_data.lan_data.console_mac[1], - session_info->channel_data.lan_data.console_mac[2], - session_info->channel_data.lan_data.console_mac[3], - session_info->channel_data.lan_data.console_mac[4], - session_info->channel_data.lan_data.console_mac[5]); + printf(",%s", mac2str( + session_info->channel_data.lan_data.console_mac)); console_port_tmp = session_info->channel_data.lan_data.console_port; #if WORDS_BIGENDIAN @@ -187,13 +182,8 @@ print_session_info_verbose(const struct get_session_info_rsp * session_info, buffer, 16)); - printf("console mac : %02x:%02x:%02x:%02x:%02x:%02x\n", - session_info->channel_data.lan_data.console_mac[0], - session_info->channel_data.lan_data.console_mac[1], - session_info->channel_data.lan_data.console_mac[2], - session_info->channel_data.lan_data.console_mac[3], - session_info->channel_data.lan_data.console_mac[4], - session_info->channel_data.lan_data.console_mac[5]); + printf("console mac : %s\n", mac2str( + session_info->channel_data.lan_data.console_mac)); console_port_tmp = session_info->channel_data.lan_data.console_port; #if WORDS_BIGENDIAN @@ -298,12 +288,12 @@ ipmi_get_session_info(struct ipmi_intf * intf, } rsp = intf->sendrecv(intf, &req); - if (rsp == NULL) + if (!rsp) { lprintf(LOG_ERR, "Get Session Info command failed"); retval = -1; } - else if (rsp->ccode > 0) + else if (rsp->ccode) { lprintf(LOG_ERR, "Get Session Info command failed: %s", val2str(rsp->ccode, completion_code_vals)); @@ -312,15 +302,19 @@ ipmi_get_session_info(struct ipmi_intf * intf, if (retval < 0) { - if ((session_request_type == IPMI_SESSION_REQUEST_CURRENT) && - (strncmp(intf->name, "lan", 3) != 0)) + if (session_request_type == IPMI_SESSION_REQUEST_CURRENT + && strcmp(intf->name, "lan")) + { lprintf(LOG_ERR, "It is likely that the channel in use " "does not support sessions"); + } } else { - memcpy(&session_info, rsp->data, rsp->data_len); - print_session_info(&session_info, rsp->data_len); + memcpy(&session_info, rsp->data, + __min(rsp->data_len, sizeof(session_info))); + print_session_info(&session_info, + __min(rsp->data_len, sizeof(session_info))); } break; @@ -332,13 +326,13 @@ ipmi_get_session_info(struct ipmi_intf * intf, rqdata[0] = i++; rsp = intf->sendrecv(intf, &req); - if (rsp == NULL) + if (!rsp) { lprintf(LOG_ERR, "Get Session Info command failed"); retval = -1; break; } - else if (rsp->ccode > 0 && rsp->ccode != 0xCC && rsp->ccode != 0xCB) + else if (rsp->ccode && rsp->ccode != 0xCC && rsp->ccode != 0xCB) { lprintf(LOG_ERR, "Get Session Info command failed: %s", val2str(rsp->ccode, completion_code_vals)); @@ -351,8 +345,10 @@ ipmi_get_session_info(struct ipmi_intf * intf, break; } - memcpy(&session_info, rsp->data, rsp->data_len); - print_session_info(&session_info, rsp->data_len); + memcpy(&session_info, rsp->data, + __min(rsp->data_len, sizeof(session_info))); + print_session_info(&session_info, + __min(rsp->data_len, sizeof(session_info))); } while (i <= session_info.session_slot_count); break; @@ -375,14 +371,14 @@ ipmi_session_main(struct ipmi_intf * intf, int argc, char ** argv) { int retval = 0; - if (argc == 0 || strncmp(argv[0], "help", 4) == 0) + if (!argc || !strcmp(argv[0], "help")) { printf_session_usage(); } - else if (strncmp(argv[0], "info", 4) == 0) + else if (!strcmp(argv[0], "info")) { - if ((argc < 2) || strncmp(argv[1], "help", 4) == 0) + if (argc < 2 || !strcmp(argv[1], "help")) { printf_session_usage(); } @@ -391,11 +387,11 @@ ipmi_session_main(struct ipmi_intf * intf, int argc, char ** argv) Ipmi_Session_Request_Type session_request_type = 0; uint32_t id_or_handle = 0; - if (strncmp(argv[1], "active", 6) == 0) + if (!strcmp(argv[1], "active")) session_request_type = IPMI_SESSION_REQUEST_CURRENT; - else if (strncmp(argv[1], "all", 3) == 0) + else if (!strcmp(argv[1], "all")) session_request_type = IPMI_SESSION_REQUEST_ALL; - else if (strncmp(argv[1], "id", 2) == 0) + else if (!strcmp(argv[1], "id")) { if (argc >= 3) { @@ -414,7 +410,7 @@ ipmi_session_main(struct ipmi_intf * intf, int argc, char ** argv) retval = -1; } } - else if (strncmp(argv[1], "handle", 6) == 0) + else if (!strcmp(argv[1], "handle")) { if (argc >= 3) { |