[gnumeric] Fix crash on corrupted files. [#702485]



commit c3eeb6d7c25ba366ae434c11e28f2c602cb29a05
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Mon Jun 17 10:56:47 2013 -0600

    Fix crash on corrupted files. [#702485]
    
    2013-06-17  Andreas J. Guelzow <aguelzow pyrshep ca>
    
        * xlsx-read.c (xlsx_validation_expr): check for null validation;

 NEWS                      |    2 +-
 plugins/excel/ChangeLog   |    4 ++++
 plugins/excel/xlsx-read.c |   10 ++++++++--
 3 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/NEWS b/NEWS
index 1a42851..fe4a601 100644
--- a/NEWS
+++ b/NEWS
@@ -24,7 +24,7 @@ Andreas:
        * Fix ODF crash. [#702197]
        * In ODF import ignored mentioned but not included sheets. [#698388]
        * Fix crash on corrupted files.  [#702205] [#702219] [#702285]
-         [#702288] [#702364] [#702409] [#702486]
+         [#702288] [#702364] [#702409] [#702486] [#702485]
        * Some documentation improvements. [Debian #621735] [Debian #530462]
        * Fix crash on xlsx import due to external references. [#702407] 
 
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 0e07bb2..9a0ee49 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,7 @@
+2013-06-17  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+       * xlsx-read.c (xlsx_validation_expr): check for null validation;
+
 2013-06-16  Andreas J. Guelzow <aguelzow pyrshep ca>
 
        * xlsx-read-drawing.c: connect "ext" handler
diff --git a/plugins/excel/xlsx-read.c b/plugins/excel/xlsx-read.c
index 1f26e7c..f8cb3bb 100644
--- a/plugins/excel/xlsx-read.c
+++ b/plugins/excel/xlsx-read.c
@@ -2150,6 +2150,9 @@ xlsx_validation_expr (GsfXMLIn *xin, G_GNUC_UNUSED GsfXMLBlob *blob)
        GnmParsePos pp;
        GnmExprTop const *texpr;
 
+       if (state->validation == NULL)
+               return;
+
        /*  Sneaky buggers, parse relative to the 1st sqRef */
        parse_pos_init (&pp, NULL, state->sheet,
                state->pos.col, state->pos.row);
@@ -3016,6 +3019,8 @@ xlsx_ext_begin (GsfXMLIn *xin, xmlChar const **attrs)
 static GsfXMLInNode const xlsx_sheet_dtd[] = {
 GSF_XML_IN_NODE_FULL (START, START, -1, NULL, GSF_XML_NO_CONTENT, FALSE, TRUE, NULL, NULL, 0),
 GSF_XML_IN_NODE_FULL (START, SHEET, XL_NS_SS, "worksheet", GSF_XML_NO_CONTENT, FALSE, TRUE, NULL, 
&xlsx_CT_worksheet, 0),
+  GSF_XML_IN_NODE (SHEET, EXTLST, XL_NS_SS, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
+    GSF_XML_IN_NODE (EXTLST, EXTITEM, XL_NS_SS, "ext", GSF_XML_NO_CONTENT, &xlsx_ext_begin, NULL),
   GSF_XML_IN_NODE (SHEET, PROPS, XL_NS_SS, "sheetPr", GSF_XML_NO_CONTENT, &xlsx_CT_SheetPr, NULL),
     GSF_XML_IN_NODE (PROPS, OUTLINE_PROPS, XL_NS_SS, "outlinePr", GSF_XML_NO_CONTENT, NULL, NULL),
     GSF_XML_IN_NODE (PROPS, TAB_COLOR, XL_NS_SS, "tabColor", GSF_XML_NO_CONTENT, &xlsx_sheet_tabcolor, NULL),
@@ -3041,8 +3046,7 @@ GSF_XML_IN_NODE_FULL (START, SHEET, XL_NS_SS, "worksheet", GSF_XML_NO_CONTENT, F
        GSF_XML_IN_NODE (CELL, VALUE, XL_NS_SS, "v", GSF_XML_CONTENT, NULL, &xlsx_cell_val_end),
        GSF_XML_IN_NODE (CELL, FMLA, XL_NS_SS,  "f", GSF_XML_CONTENT, &xlsx_cell_expr_begin, 
&xlsx_cell_expr_end),
         GSF_XML_IN_NODE (CELL, TEXTINLINE, XL_NS_SS,  "is", GSF_XML_NO_CONTENT, NULL, NULL),
-        GSF_XML_IN_NODE (CELL, EXTLST, XL_NS_SS, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
-          GSF_XML_IN_NODE (EXTLST, EXTITEM, XL_NS_SS, "ext", GSF_XML_NO_CONTENT, &xlsx_ext_begin, NULL),
+GSF_XML_IN_NODE (CELL, EXTLST, XL_NS_SS, "extLst", GSF_XML_NO_CONTENT, NULL, NULL), /* 2nd */
          GSF_XML_IN_NODE (TEXTINLINE, TEXTRUN, XL_NS_SS,  "t", GSF_XML_CONTENT, NULL, 
&xlsx_cell_inline_text_end),
 
   GSF_XML_IN_NODE (SHEET, CALC_PR, XL_NS_SS, "sheetCalcPr", GSF_XML_NO_CONTENT, NULL, NULL),
@@ -3773,6 +3777,8 @@ xlsx_webpub_begin (GsfXMLIn *xin, xmlChar const **attrs)
 static GsfXMLInNode const xlsx_workbook_dtd[] = {
 GSF_XML_IN_NODE_FULL (START, START, -1, NULL, GSF_XML_NO_CONTENT, FALSE, TRUE, NULL, NULL, 0),
 GSF_XML_IN_NODE_FULL (START, WORKBOOK, XL_NS_SS, "workbook", GSF_XML_NO_CONTENT, FALSE, TRUE, NULL, 
&xlsx_wb_end, 0),
+  GSF_XML_IN_NODE (WORKBOOK, EXTLST, XL_NS_SS, "extLst", GSF_XML_NO_CONTENT, NULL, NULL),
+    GSF_XML_IN_NODE (EXTLST, EXTITEM, XL_NS_SS, "ext", GSF_XML_NO_CONTENT, &xlsx_ext_begin, NULL),
   GSF_XML_IN_NODE (WORKBOOK, VERSION, XL_NS_SS,           "fileVersion", GSF_XML_NO_CONTENT, NULL, NULL),
   GSF_XML_IN_NODE (WORKBOOK, PROPERTIES, XL_NS_SS, "workbookPr", GSF_XML_NO_CONTENT, &xlsx_CT_WorkbookPr, 
NULL),
   GSF_XML_IN_NODE (WORKBOOK, CALC_PROPS, XL_NS_SS, "calcPr", GSF_XML_NO_CONTENT, &xlsx_CT_CalcPr, NULL),


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]