GNOME Bugzilla – Bug 704636
Segfault in xlsx_write_pivot_val on saving a corrupted (fuzzed) xlsx file
Last modified: 2013-07-21 22:55:25 UTC
Segfault in xlsx_write_pivot_val on saving a corrupted (fuzzed) xlsx file. Git versions of glib, goffice, gnumeric, libgsf and libxml2. Test case: http://jutaky.com/fuzzing/gnumeric_case_25395_18.xlsx Backtrace from "ssconvert gnumeric_case_25395_18.xlsx out.xlsx": Program received signal SIGSEGV, Segmentation fault. 0x00007fffe6d4a4ac in xlsx_write_pivot_val (state=0x7fffffffe220, xml=0xa62b90, v=0x0) at xlsx-write-pivot.c:39 39 switch (v->type) { (gdb) bt
+ Trace 232282
-- Juha Kylmänen Research Assistant, OUSPG
This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.
Andreas, that fix is in the export (which is where the crash occurred). Is the state correct at that point or do we need a word with the importer too?
I have no idea what the pivot table code inside Gnumeric works, or in fact what it currently does. In the exporter we already checked for null values that are part of an array, so I would guess that in general Null values may be acceptable. Also in xls-write-pivot.c we have an equivalent test: static void xls_write_pivot_cache_value (ExcelWriteState *ewb, GOVal const *v) { if (NULL != v) { switch (v->type) {