From 96e7681bc36b5aa93ed794515ac7b119e3d35651 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Mon, 17 Feb 2014 20:36:00 +0100 Subject: [PATCH] Fix memory fault reading ODS file. Partial fix for bug #41620 --- src/data/ods-reader.c | 3 ++- tests/automake.mk | 5 +++-- tests/language/data-io/get-data-spreadsheet.at | 16 ++++++++++++++++ tests/language/data-io/newone.ods | Bin 0 -> 13038 bytes 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 tests/language/data-io/newone.ods diff --git a/src/data/ods-reader.c b/src/data/ods-reader.c index 8504c14cca..1b828d1e36 100644 --- a/src/data/ods-reader.c +++ b/src/data/ods-reader.c @@ -986,8 +986,9 @@ ods_file_casereader_read (struct casereader *reader UNUSED, void *r_) struct xml_value *xmv = xzalloc (sizeof *xmv); xmv->text = xmlTextReaderValue (r->rsd.xtr); xmv->value = val_string; - xmv->type = type; val_string = NULL; + xmv->type = type; + type = NULL; for (col = 0; col < r->rsd.col_span; ++col) { diff --git a/tests/automake.mk b/tests/automake.mk index de2425f8af..31bf0b2033 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -226,8 +226,9 @@ EXTRA_DIST += \ tests/data/num-out.expected.cmp.gz \ tests/data/v13.sav \ tests/data/v14.sav \ - tests/language/data-io/Book1.gnm.unzipped \ - tests/language/data-io/test.ods + tests/language/data-io/Book1.gnm.unzipped \ + tests/language/data-io/test.ods \ + tests/language/data-io/newone.ods CLEANFILES += *.save pspp.* foo* diff --git a/tests/language/data-io/get-data-spreadsheet.at b/tests/language/data-io/get-data-spreadsheet.at index 5d5a064a27..78ae754c8c 100644 --- a/tests/language/data-io/get-data-spreadsheet.at +++ b/tests/language/data-io/get-data-spreadsheet.at @@ -398,3 +398,19 @@ AT_BANNER([GET DATA Spreadsheet /TYPE=ODS]) CHECK_SPREADSHEET_READER([ODS]) + +AT_SETUP([GET DATA /TYPE=ODS crash]) +AT_SKIP_IF([test n$ODF_READ_SUPPORT != nyes]) + + +AT_CHECK([cp $top_srcdir/tests/language/data-io/newone.ods this.ods])dnl + +AT_DATA([crash.sps],[dnl +GET DATA /TYPE=ODS /FILE='this.ods' /CELLRANGE=RANGE 'A1:C8' /READNAMES=ON +LIST. +]) + +AT_CHECK([pspp -O format=csv crash.sps], [0], [ignore]) + +AT_CLEANUP + diff --git a/tests/language/data-io/newone.ods b/tests/language/data-io/newone.ods new file mode 100644 index 0000000000000000000000000000000000000000..11926c40c7d877d3ef5c7d4db95eb9a777f4450f GIT binary patch literal 13038 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

9uMLFjli$nq1at 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 phm@ZK_d6WiKJ{{b*hU~B*Y literal 0 HcmV?d00001 -- 2.30.2