Mmmm looks like we're also fwrite()'ing sdrr->raw without checking it for
NULL:
r = fwrite(sdrr->raw, 1, sdrr->length, fp);
----
sdrr->raw = ipmi_sdr_get_record(intf, header, itr);
----
Append:
if (sdrr->raw == NULL) {
lprintf(LOG_ERR, "Debug: Learn to swim learn to swim ...");
return -1;
}
----
Prototype:
/* ipmi_sdr_get_record - return RAW SDR record
*
* @intf: ipmi interface
* @header: SDR header
* @itr: SDR iterator
*
* returns raw SDR data
* returns NULL on error
*/
---
Backtrace:
(gdb) print sdrr->length
$5 = 53 '5'
(gdb) print sdrr->raw
$6 = (uint8_t *) 0x0
---
(gdb) bt
#0 0x282e483a in memcpy () from /lib/libc.so.6
#1 0x282e28e2 in __sfvwrite () from /lib/libc.so.6
#2 0x282e269a in fwrite () from /lib/libc.so.6
#3 0x0805573d in ipmi_sdr_dump_bin (intf=0x80d3e40, ofile=0xbfbfeea0
"/var/spool/ipmi_sdrcache/needlenose-ipmi.admin.tmp")
at ipmi_sdr.c:3906
#4 0x08056226 in ipmi_sdr_main (intf=0x80d3e40, argc=3, argv=0xbfbfed70)
at ipmi_sdr.c:4180
#5 0x08079c7e in ipmi_cmd_run (intf=0x80d3e40, name=0xbfbfee97 "sdr",
argc=3, argv=0xbfbfed70) at ipmi_main.c:207
#6 0x0807aa0d in ipmi_main (argc=11, argv=0xbfbfed50, cmdlist=0x80bb4a0,
intflist=0x0) at ipmi_main.c:601
#7 0x0804ad46 in main (argc=11, argv=0xbfbfed50) at ipmitool.c:115
~BAS
On Wed, 18 Apr 2007, Brian A. Seklecki wrote:
>
> (gdb) bt
> #0 0x282d034c in fclose () from /lib/libc.so.6
> #1 0x08055559 in ipmi_sdr_dump_bin (intf=0x80d3e60, ofile=0xbfbfeea8
> "/var/spool/ipmi_sdrcache/foo-ipmi.cust00.tmp") at ipmi_sdr.c:3846
> #2 0x08056236 in ipmi_sdr_main (intf=0x80d3e60, argc=3, argv=0xbfbfed84)
> at ipmi_sdr.c:4179
> #3 0x08079c8e in ipmi_cmd_run (intf=0x80d3e60, name=0xbfbfee9f "sdr",
> argc=3, argv=0xbfbfed84) at ipmi_main.c:207
> #4 0x0807aa1d in ipmi_main (argc=11, argv=0xbfbfed64, cmdlist=0x80bb4c0,
> intflist=0x0) at ipmi_main.c:601
> #5 0x0804ad46 in main (argc=11, argv=0xbfbfed64) at ipmitool.c:115
>
> I'm going through each instance and each instance of fclose() in the code
> and ensure that we've initalized the pointer value before we fclose() it.
>
> $ grep -ir "fclose(fp)" foo/ipmitool/work/ipmitool-1.8.8/* | wc -l
> 19
>
> # grep -ir "fclose(fp)" ipmitool-1.8.9/*|wc -l
> 18
>
>
>
> l8*
> -lava (Brian A. Seklecki - Pittsburgh, PA, USA)
> http://www.spiritual-machines.org/
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Ipmitool-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ipmitool-devel
>
l8*
-lava (Brian A. Seklecki - Pittsburgh, PA, USA)
http://www.spiritual-machines.org/
"...from back in the heady days when "helpdesk" meant nothing, "diskquota"
meant everything, and lives could be bought and sold for a couple of pages
of laser printout - and frequently were."
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Ipmitool-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel