On Fri, Jul 19, 2013 at 03:30:31PM -0500, Jeffrey Bastian wrote:
> I was just reviewing the get_lan_param_select() code in lib/ipmi_lanp.c
> and I think I found a bug:
> 
>       for (i = 0; ipmi_lan_params[i].cmd != (-1); i++) {
>               if (ipmi_lan_params[i].cmd == param) {
>                       p = &ipmi_lan_params[param];
>                       break;
>               }
>       }
> 
> The 3rd line should use i for the array index, not param:
> -                     p = &ipmi_lan_params[param];
> +                     p = &ipmi_lan_params[i];
> 
> The param value matches the cmd in the lan_param struct, but it's not 
> the same as the ipmi_lan_params[] array index.


Here is an example of what I mean.  This problem becomes apparent with
the OEM extensions which use values 192+.

Setting a breakpoint on the get_lan_param_select() function:
  $ gdb ./ipmitool
  (gdb) b get_lan_param_select
  (gdb) run -H hostname -U user -P password lan print 1
  (gdb) p ipmi_lan_params[28]
  $1 = {cmd = 193, size = 4,
    desc = "TFTP Server IP\000\000\000\000\000\000\000\000\000", data = 0x0,
    data_len = 0}
  (gdb) p sizeof(ipmi_lan_params) / sizeof(*ipmi_lan_params)
  $2 = 40

As you can see, entry 28 in the array has cmd value of 193.

So, if ipmi_lan_params[i].cmd == param == 193 then
                        p = &ipmi_lan_params[param];
becomes
                        p = &ipmi_lan_params[193];
which is a bug because the array only has 40 entries.

Thus, the line should be
                        p = &ipmi_lan_params[i];

Jeff

------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to