Index: freeipmi-0.6.10/ipmi-oem/src/ipmi-oem-argp.c =================================================================== --- freeipmi-0.6.10.orig/ipmi-oem/src/ipmi-oem-argp.c +++ freeipmi-0.6.10/ipmi-oem/src/ipmi-oem-argp.c @@ -93,6 +93,7 @@ parse_opt (int key, char *arg, struct ar } else { +#if 0 if (cmd_args->oem_options_count < ARG_MAX) { if (!(cmd_args->oem_options[cmd_args->oem_options_count] = strdup(arg))) @@ -103,6 +104,7 @@ parse_opt (int key, char *arg, struct ar cmd_args->oem_options_count++; break; } +#endif } break; } @@ -126,7 +128,9 @@ ipmi_oem_argp_parse (int argc, char **ar cmd_args->oem_id = NULL; cmd_args->oem_command = NULL; +#if 0 memset (cmd_args->oem_options, 0, sizeof(cmd_args->oem_options)); +#endif cmd_args->oem_options_count = 0; argp_parse (&argp, argc, argv, ARGP_IN_ORDER, NULL, cmd_args); Index: freeipmi-0.6.10/ipmi-oem/src/ipmi-oem.h =================================================================== --- freeipmi-0.6.10.orig/ipmi-oem/src/ipmi-oem.h +++ freeipmi-0.6.10/ipmi-oem/src/ipmi-oem.h @@ -20,7 +20,6 @@ #define _IPMI_OEM_H #include -#include /* ARG_MAX */ #include "tool-cmdline-common.h" #include "pstdout.h" @@ -31,7 +30,9 @@ struct ipmi_oem_arguments struct hostrange_cmd_args hostrange; char *oem_id; char *oem_command; +#if 0 char *oem_options[ARG_MAX]; +#endif unsigned int oem_options_count; }; Index: freeipmi-0.6.10/ipmipower/src/Makefile.am =================================================================== --- freeipmi-0.6.10.orig/ipmipower/src/Makefile.am +++ freeipmi-0.6.10/ipmipower/src/Makefile.am @@ -32,7 +32,8 @@ ipmipower_CPPFLAGS = \ -I$(srcdir)/../../ipmidetect/src/libipmidetect \ -I$(srcdir)/../../libfreeipmi/include \ -DWITH_LSD_FATAL_ERROR_FUNC=1 \ - -DWITH_LSD_NOMEM_ERROR_FUNC=1 + -DWITH_LSD_NOMEM_ERROR_FUNC=1 \ + -D_GNU_SOURCE noinst_HEADERS= \ argv.h \ Index: freeipmi-0.6.10/ipmi-raw/src/ipmi-raw-argp.c =================================================================== --- freeipmi-0.6.10.orig/ipmi-raw/src/ipmi-raw-argp.c +++ freeipmi-0.6.10/ipmi-raw/src/ipmi-raw-argp.c @@ -24,6 +24,7 @@ #include #if STDC_HEADERS #include +#include #endif /* STDC_HEADERS */ #include @@ -139,7 +140,7 @@ ipmi_raw_argp_parse (int argc, char **ar init_hostrange_cmd_args (&(cmd_args->hostrange)); cmd_args->cmd_file = NULL; - memset (cmd_args->cmd, 0, sizeof(cmd_args->cmd)); + cmd_args->cmd = calloc(sysconf(_SC_ARG_MAX), sizeof(uint8_t)); cmd_args->cmd_length = 0; argp_parse (&argp, argc, argv, ARGP_IN_ORDER, NULL, cmd_args); Index: freeipmi-0.6.10/ipmi-raw/src/ipmi-raw.c =================================================================== --- freeipmi-0.6.10.orig/ipmi-raw/src/ipmi-raw.c +++ freeipmi-0.6.10/ipmi-raw/src/ipmi-raw.c @@ -24,9 +24,9 @@ #include #if STDC_HEADERS #include +#include #endif /* STDC_HEADERS */ #include -#include #include #include @@ -46,13 +46,17 @@ ipmi_raw_cmdline (ipmi_raw_state_data_t uint8_t *bytes_rq = NULL; int send_len; int i; - uint8_t bytes_rs[ARG_MAX]; + uint8_t *bytes_rs; + long arg_max; int32_t rs_len; assert(state_data); assert(state_data->prog_data->args->cmd); assert(state_data->prog_data->args->cmd_length); + arg_max = sysconf(_SC_ARG_MAX); + bytes_rs = calloc(arg_max, sizeof(uint8_t)); + args = state_data->prog_data->args; bytes_rq = args->cmd; @@ -72,7 +76,7 @@ ipmi_raw_cmdline (ipmi_raw_state_data_t &bytes_rq[2], send_len - 2, bytes_rs, - ARG_MAX)) >= 0) + arg_max)) >= 0) { pstdout_printf (state_data->pstate, "rcvd: "); for (i = 0; i < rs_len; i++) @@ -210,13 +214,17 @@ ipmi_raw_stream (ipmi_raw_state_data_t * size_t n = 0; uint8_t *bytes_rq = NULL; int send_len; - uint8_t bytes_rs[ARG_MAX]; + uint8_t *bytes_rs; + long arg_max; int32_t rs_len; int i, rv = -1; assert(state_data); assert(stream); + arg_max = sysconf(_SC_ARG_MAX); + bytes_rs = calloc(arg_max, sizeof(uint8_t)); + args = state_data->prog_data->args; while (1) @@ -246,7 +254,7 @@ ipmi_raw_stream (ipmi_raw_state_data_t * &bytes_rq[2], send_len - 2, bytes_rs, - ARG_MAX)) < 0) + arg_max)) < 0) { pstdout_fprintf(state_data->pstate, stderr, Index: freeipmi-0.6.10/ipmi-raw/src/ipmi-raw.h =================================================================== --- freeipmi-0.6.10.orig/ipmi-raw/src/ipmi-raw.h +++ freeipmi-0.6.10/ipmi-raw/src/ipmi-raw.h @@ -20,7 +20,6 @@ #define _IPMI_RAW_H #include -#include /* ARG_MAX */ #include "tool-cmdline-common.h" #include "pstdout.h" @@ -35,7 +34,7 @@ struct ipmi_raw_arguments struct common_cmd_args common; struct hostrange_cmd_args hostrange; char *cmd_file; - uint8_t cmd[ARG_MAX]; + uint8_t *cmd; int cmd_length; };