r21508 - gnucash/trunk/src/gnome - Protect strcmp from crashing on NULL values

Geert Janssens gjanssens at code.gnucash.org
Sat Oct 29 03:45:34 EDT 2011


Author: gjanssens
Date: 2011-10-29 03:45:34 -0400 (Sat, 29 Oct 2011)
New Revision: 21508
Trac: http://svn.gnucash.org/trac/changeset/21508

Modified:
   gnucash/trunk/src/gnome/gnc-plugin-page-register.c
Log:
Protect strcmp from crashing on NULL values

Modified: gnucash/trunk/src/gnome/gnc-plugin-page-register.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-register.c	2011-10-28 20:50:12 UTC (rev 21507)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-register.c	2011-10-29 07:45:34 UTC (rev 21508)
@@ -886,7 +886,7 @@
 
     gnc_split_reg_set_sort_type(priv->gsr, SortTypefromString(order));
 
-    if(strcmp(order, DEFAULT_SORT_ORDER) != 0)
+    if (order && (strcmp (order, DEFAULT_SORT_ORDER) != 0))
         priv->sd.save_order = TRUE;
 
     priv->sd.original_save_order = priv->sd.save_order;
@@ -901,25 +901,25 @@
 
     priv->fd.cleared_match = (gint)g_ascii_strtoll( filter[0], NULL, 16 );
 
-    if(strcmp(filter[0], DEFAULT_FILTER) != 0)
-	filter_changed = filter_changed + 1;
+    if (filter[0] && (strcmp (filter[0], DEFAULT_FILTER) != 0))
+        filter_changed = filter_changed + 1;
 
-    if (strcmp(filter[1],"0") != 0 )
+    if (filter[1] && (strcmp (filter[1],"0") != 0 ))
     {
         PINFO("Loaded Filter Start Date is %s", filter[1]);
 
         priv->fd.start_time = gnc_plugin_page_register_filter_dmy2time( filter[1] );
         priv->fd.start_time = gnc_timet_get_day_start(priv->fd.start_time);
-	filter_changed = filter_changed + 1;
-    }
+        filter_changed = filter_changed + 1;
 
-    if (strcmp(filter[2],"0") != 0 )
-    {
-        PINFO("Loaded Filter End Date is %s", filter[2]);
+        if (filter[2] && (strcmp (filter[2],"0") != 0 ))
+        {
+            PINFO("Loaded Filter End Date is %s", filter[2]);
 
-        priv->fd.end_time = gnc_plugin_page_register_filter_dmy2time( filter[2] );
-        priv->fd.end_time = gnc_timet_get_day_end(priv->fd.end_time);
-	filter_changed = filter_changed + 1;
+            priv->fd.end_time = gnc_plugin_page_register_filter_dmy2time( filter[2] );
+            priv->fd.end_time = gnc_timet_get_day_end(priv->fd.end_time);
+            filter_changed = filter_changed + 1;
+        }
     }
 
     if(filter_changed != 0)
@@ -1459,7 +1459,7 @@
 
     default_filter = g_strdup_printf("%s,%s,%s", DEFAULT_FILTER, "0", "0");
 
-    if(strcmp(filter, default_filter) == 0)
+    if (!filter || (strcmp (filter, default_filter) == 0))
         xaccAccountSetFilter (leader, NULL);
     else
         xaccAccountSetFilter (leader, filter);
@@ -1507,7 +1507,7 @@
     ledger_type = gnc_ledger_display_type (ld);
     leader = gnc_ledger_display_leader (ld);
 
-    if(strcmp(sort_order, DEFAULT_SORT_ORDER) == 0)
+    if (!sort_order || (strcmp (sort_order, DEFAULT_SORT_ORDER) == 0))
         xaccAccountSetSortOrder (leader, NULL);
     else
         xaccAccountSetSortOrder (leader, sort_order);



More information about the gnucash-changes mailing list