GNOME Bugzilla – Bug 702833
Buffer overflow in go_pattern_create_cairo_pattern on a corrupted (fuzzed) gnumeric file
Last modified: 2013-08-14 01:21:34 UTC
I don't know if this should have belonged to the goffice product or here. But I discovered a buffer overflow (identified by Address Sanitizer) via a fuzzed gnumeric file. Git versions of glib, goffice, gnumeric, libgsf and libxml2. Doesn't seem to affect goffice 0.10.2 and gnumeric 1.12.2. Test case: http://jutaky.com/fuzzing/gnumeric_case_31789_2117.gnumeric Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7551502 in go_pattern_create_cairo_pattern (pattern=0x7fffffffcc30, cr=0x1025830) at utils/go-pattern.c:329 329 color = pattern_data[i] & (1 << j) ? pattern->fore : pattern->back; (gdb) bt
+ Trace 232125
-- Juha Kylmänen Research Assistant, OUSPG
I cannot replicate.
We have no protection against pattern == 25, which is invalid, the largest valid being 24. This file has some areas using it 25. In that case, we pattern_data points to an invalid area. Note that we only read there, not write. The fix is trivial. Hope it was that, feel free to reopen if not. This problem has been fixed in our software repository. The fix will go into the next software release. Thank you for your bug report.
See bug 705946.