Hi,

   reviewing the potential problems g_strsplit could cause in others
parts of wireshark. I noticed that my patch was not completely safe.
here is a patch which should be safe. (please also review)


Regards,
Sebastien Tandel
Index: epan/stats_tree.c
===================================================================
--- epan/stats_tree.c   (révision 20131)
+++ epan/stats_tree.c   (copie de travail)
@@ -526,16 +526,47 @@
 
 static range_pair_t* get_range(guint8* rngstr) {
        gchar** split;
-       range_pair_t* rng = g_malloc(sizeof(range_pair_t));
+       range_pair_t* rng;
        
-       split =  g_strsplit(rngstr,"-",2);
+       split = g_strsplit(rngstr,"-",0);
 
-       rng->floor = strtol(split[0],NULL,10);
-       rng->ceil  = strtol(split[1],NULL,10);
+       /* empty string */
+       if (split[0] == NULL) {
+         printf("0==null, rng : %s(%x)\n", rngstr);
+         g_strfreev(split);
+         return NULL;
+       }
+
+#if GLIB_MAJOR_VERSION >= 2
+       /* means we have a non empty string 
+        * which does not contain a delimiter */
+       if (split[1] == NULL) {
+         printf("1==null, rng : %s\n", rngstr);
+         g_strfreev(split);
+         return NULL;
+       }
+#endif
+
+       rng = g_malloc(sizeof(range_pair_t));
+
+       /* string == "X-?" */
+       if (*(split[0]) != '\0') {
+           rng->floor = strtol(split[0],NULL,10);
+       } else
+         /* string == "-?" */
+         rng->floor = G_MININT;
+
+       /* string != "?-" */
+#if GLIB_MAJOR_VERSION >= 2
+       if (*(split[1]) != '\0') {
+#else
+       if (split[1] != NULL) {
+#endif
+         rng->ceil  = strtol(split[1],NULL,10);
+       } else
+         /* string == "?-Y" */
+         rng->ceil = G_MAXINT;
        
-       if (rng->ceil == 0) rng->ceil = G_MAXINT;
-       if (rng->floor == 0) rng->floor = G_MININT;
-
        g_strfreev(split);
        
        return rng;
_______________________________________________
Wireshark-dev mailing list
Wireshark-dev@wireshark.org
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to