Luca Bruno writes: Runnnig `foomatic-db-engine -O` in gdb says that the bug is at line 1840:
Running it under valgrind is more telling. It's a buffer overflow. I get this first: ==8614== Source and destination overlap in strcpy(0xBEEED388, 0xBEEED388) ==8614== at 0x401E83B: strcpy (mac_replace_strmem.c:107) ==8614== by 0x804AAB2: parse (foomatic-combo-xml.c:1203) ==8614== by 0x804D2F2: main (foomatic-combo-xml.c:1782) which may be harmless, depending on the implementation of strcpy, but the buffer overflow happens here: ==8614== ==8614== Invalid write of size 4 ==8614== at 0x804AFAE: parse (foomatic-combo-xml.c:1434) ==8614== by 0x804D462: main (foomatic-combo-xml.c:1834) ==8614== Address 0x4257755 is 981 bytes inside a block of size 984 alloc'd ==8614== at 0x401D98D: realloc (vg_replace_malloc.c:306) ==8614== by 0x8048A10: loadfile (foomatic-combo-xml.c:105) ==8614== by 0x804D3EF: main (foomatic-combo-xml.c:1825) It's doing a whole bunch of strcat'ing without checking the buffer length, and it eventually overflows. If I change the final realloc on line 105 from: /* Make space for an additional line, needed for the default value in an option file */ data = (char *)realloc(data, size + 128); to: data = (char *)realloc(data, size + 128 * 1024); Then everything works for me, although obviously that's not a real patch either. Eric -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]