Hello, all,
The attached patch fixes several compile and run-time bugs in the
current ipmitool TOB:> o lib/ipmi_sel.c
- zero data before making request to avoid reading of uninitialized data
o lib/ipmi_mc.c
- do not print AUX info, if IPMC return 12-byte Get Device ID response
o lib/ipmi_picmg.c
- add support for hexadecimal and octal formats for the command-line
parameters
o configure.in
- fixed build for the newer autotool releases
- do not override OS-default values for IMB, OPEN and LIPMI interfaces
if the corresponding enable/disable arguments are not provided in the
command-line
Please, review.
Regards,
Dmitry
diff -Nurp ipmitool.sav/configure.in ipmitool.cvs/configure.in
--- ipmitool.sav/configure.in 2013-04-15 15:12:09 +0600
+++ ipmitool.cvs/configure.in 2013-04-17 22:41:55 +0600
@@ -209,11 +209,18 @@ AC_ARG_WITH([kerneldir],
AH_TEMPLATE([HAVE_LINUX_COMPILER_H], [])
AC_MSG_CHECKING([for linux/compiler.h])
-AC_PREPROC_IFELSE([#include <linux/compiler.h>],
- [AC_DEFINE(HAVE_LINUX_COMPILER_H, [1],
+
+m4_version_prereq([2.68],
+ [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <linux/compiler.h>]])],
+ [AC_DEFINE(HAVE_LINUX_COMPILER_H, [1],
+ [Define to 1 if you have the <linux/compiler.h> header file.])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])],
+ [AC_PREPROC_IFELSE([#include <linux/compiler.h>],
+ [AC_DEFINE(HAVE_LINUX_COMPILER_H, [1],
[Define to 1 if you have the <linux/compiler.h> header file.])
- AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])])
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])])
CPPFLAGS=$ORIG_CPPFLAGS
AC_SUBST(CPPFLAGS)
@@ -379,7 +386,7 @@ AC_ARG_ENABLE([intf-open],
[AC_HELP_STRING([--enable-intf-open],
[enable Linux OpenIPMI interface [default=auto]])],
[xenable_intf_open=$enableval],
- [xenable_intf_open=yes])
+ [])
if test "x$xenable_intf_open" = "xstatic" || test "x$xenable_intf_open" = "xplugin"; then
xenable_intf_open=yes
fi
@@ -422,7 +429,7 @@ AC_ARG_ENABLE([intf-imb],
[AC_HELP_STRING([--enable-intf-imb],
[enable Intel IMB driver interface [default=auto]])],
[xenable_intf_imb=$enableval],
- [xenable_intf_imb=yes])
+ [])
if test "x$xenable_intf_imb" = "xstatic" || test "x$xenable_intf_imb" = "xplugin"; then
xenable_intf_imb=yes
fi
@@ -439,7 +446,7 @@ AC_ARG_ENABLE([intf-lipmi],
[AC_HELP_STRING([--enable-intf-lipmi],
[enable Solaris 9 x86 IPMI interface [default=no]])],
[xenable_intf_lipmi=$enableval],
- [xenable_intf_lipmi=no])
+ [])
if test "x$xenable_intf_lipmi" = "xstatic" || test "x$xenable_intf_lipmi" = "xplugin"; then
xenable_intf_lipmi=yes
fi
diff -Nurp ipmitool.sav/lib/ipmi_mc.c ipmitool.cvs/lib/ipmi_mc.c
--- ipmitool.sav/lib/ipmi_mc.c 2013-01-15 18:32:54 +0600
+++ ipmitool.cvs/lib/ipmi_mc.c 2013-04-17 22:38:16 +0600
@@ -448,13 +448,15 @@ ipmi_mc_get_deviceid(struct ipmi_intf *
printf(" %s\n", ipm_dev_adtl_dev_support[i]);
}
}
- printf("Aux Firmware Rev Info : \n");
- /* These values could be looked-up by vendor if documented,
- * so we put them on individual lines for better treatment later
- */
- printf(" 0x%02x\n 0x%02x\n 0x%02x\n 0x%02x\n",
- devid->aux_fw_rev[0], devid->aux_fw_rev[1],
- devid->aux_fw_rev[2], devid->aux_fw_rev[3]);
+ if (rsp->data_len == sizeof(*devid)) {
+ printf("Aux Firmware Rev Info : \n");
+ /* These values could be looked-up by vendor if documented,
+ * so we put them on individual lines for better treatment later
+ */
+ printf(" 0x%02x\n 0x%02x\n 0x%02x\n 0x%02x\n",
+ devid->aux_fw_rev[0], devid->aux_fw_rev[1],
+ devid->aux_fw_rev[2], devid->aux_fw_rev[3]);
+ }
return 0;
}
diff -Nurp ipmitool.sav/lib/ipmi_picmg.c ipmitool.cvs/lib/ipmi_picmg.c
--- ipmitool.sav/lib/ipmi_picmg.c 2013-04-15 15:12:11 +0600
+++ ipmitool.cvs/lib/ipmi_picmg.c 2013-04-17 22:38:16 +0600
@@ -1095,8 +1095,8 @@ ipmi_picmg_fru_control(struct ipmi_intf
req.msg.data_len = 3;
msg_data[0] = 0x00; /* PICMG identifier */
- msg_data[1] = atoi(argv[0]); /* FRU-ID */
- msg_data[2] = atoi(argv[1]); /* control option */
+ msg_data[1] = strtol(argv[0], NULL, 0); /* FRU-ID */
+ msg_data[2] = strtol(argv[1], NULL, 0); /* control option */
printf("FRU Device Id: %d FRU Control Option: %s\n", msg_data[1], \
val2str( msg_data[2], picmg_frucontrol_vals));
diff -Nurp ipmitool.sav/lib/ipmi_sel.c ipmitool.cvs/lib/ipmi_sel.c
--- ipmitool.sav/lib/ipmi_sel.c 2013-04-15 15:12:11 +0600
+++ ipmitool.cvs/lib/ipmi_sel.c 2013-04-17 22:38:16 +0600
@@ -329,6 +329,7 @@ ipmi_sel_add_entry(struct ipmi_intf * in
struct ipmi_rs * rsp;
struct ipmi_rq req;
+ memset(&req, 0, sizeof(req));
req.msg.netfn = IPMI_NETFN_STORAGE;
req.msg.cmd = IPMI_CMD_ADD_SEL_ENTRY;
req.msg.data = (unsigned char *)rec;
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Ipmitool-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel