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 > Ipmitool-devel@lists.sourceforge.net > 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 Ipmitool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipmitool-devel