common: Do not deref vars in tests after a fail().
authorWerner Koch <wk@gnupg.org>
Wed, 6 Jan 2016 07:31:38 +0000 (08:31 +0100)
committerWerner Koch <wk@gnupg.org>
Wed, 6 Jan 2016 07:31:38 +0000 (08:31 +0100)
* common/t-convert.c (test_bin2hex): Turn if conditions into if-else
chains to avoid accessing unchecked data.
(test_bin2hexcolon): Ditto.
* common/t-mapstrings.c (test_map_static_macro_string): Ditto.
* common/t-stringhelp.c (test_percent_escape): Ditto.
(test_make_filename_try): Ditto.
(test_make_absfilename_try): Ditto.
* common/t-timestuff.c (test_timegm): Ditto.
--

Note that these dereference only occur after failed regression tests.

Signed-off-by: Werner Koch <wk@gnupg.org>
common/t-convert.c
common/t-mapstrings.c
common/t-stringhelp.c
common/t-timestuff.c

index a03c680..ad33dff 100644 (file)
@@ -232,13 +232,13 @@ test_bin2hex (void)
   p = bin2hex (stuff, 20, NULL);
   if (!p)
     fail (0);
-  if (strcmp (p, hexstuff))
+  else if (strcmp (p, hexstuff))
     fail (0);
 
   p = bin2hex (stuff, (size_t)(-1), NULL);
   if (p)
     fail (0);
-  if (errno != ENOMEM)
+  else if (errno != ENOMEM)
     fail (1);
 }
 
@@ -264,13 +264,13 @@ test_bin2hexcolon (void)
   p = bin2hexcolon (stuff, 20, NULL);
   if (!p)
     fail (0);
-  if (strcmp (p, hexstuff))
+  else if (strcmp (p, hexstuff))
     fail (0);
 
   p = bin2hexcolon (stuff, (size_t)(-1), NULL);
   if (p)
     fail (0);
-  if (errno != ENOMEM)
+  else if (errno != ENOMEM)
     fail (1);
 }
 
index 88c6674..8f4c650 100644 (file)
@@ -68,7 +68,7 @@ test_map_static_macro_string (void)
       result = map_static_macro_string (tests[testno].string);
       if (!result)
         fail (testno);
-      if (strcmp (result, tests[testno].expected))
+      else if (strcmp (result, tests[testno].expected))
         fail (testno);
       if (!tests[testno].lastresult)
         tests[testno].lastresult = result;
@@ -80,7 +80,7 @@ test_map_static_macro_string (void)
       result = map_static_macro_string (tests[testno].string);
       if (!result)
         fail (testno);
-      if (strcmp (result, tests[testno].expected))
+      else if (strcmp (result, tests[testno].expected))
         fail (testno);
       if (result != tests[testno].lastresult)
         fail (testno);
index e97b64a..af79cb5 100644 (file)
@@ -143,7 +143,7 @@ test_percent_escape (void)
       result = percent_escape (tests[testno].value, tests[testno].extra);
       if (!result)
         fail (testno);
-      if (strcmp (result, tests[testno].expected))
+      else if (strcmp (result, tests[testno].expected))
         fail (testno);
       xfree (result);
     }
@@ -398,13 +398,13 @@ test_make_filename_try (void)
   out = make_filename_try ("~/foo", "bar", NULL);
   if (!out)
     fail (2);
-  if (home)
+  else if (home)
     {
       if (strlen (out) < homelen + 7)
         fail (2);
-      if (strncmp (out, home, homelen))
+      else if (strncmp (out, home, homelen))
         fail (2);
-      if (strcmp (out+homelen, "/foo/bar"))
+      else if (strcmp (out+homelen, "/foo/bar"))
         fail (2);
     }
   else
@@ -417,13 +417,13 @@ test_make_filename_try (void)
   out = make_filename_try ("~", "bar", NULL);
   if (!out)
     fail (2);
-  if (home)
+  else if (home)
     {
       if (strlen (out) < homelen + 3)
         fail (2);
-      if (strncmp (out, home, homelen))
+      else if (strncmp (out, home, homelen))
         fail (2);
-      if (strcmp (out+homelen, "/bar"))
+      else if (strcmp (out+homelen, "/bar"))
         fail (2);
     }
   else
@@ -445,33 +445,33 @@ test_make_absfilename_try (void)
   out = make_absfilename_try ("foo", "bar", NULL);
   if (!out)
     fail (0);
-  if (strlen (out) < cwdlen + 7)
+  else if (strlen (out) < cwdlen + 7)
     fail (0);
-  if (strncmp (out, cwd, cwdlen))
+  else if (strncmp (out, cwd, cwdlen))
     fail (0);
-  if (strcmp (out+cwdlen, "/foo/bar"))
+  else if (strcmp (out+cwdlen, "/foo/bar"))
     fail (0);
   xfree (out);
 
   out = make_absfilename_try ("./foo", NULL);
   if (!out)
     fail (1);
-  if (strlen (out) < cwdlen + 5)
+  else if (strlen (out) < cwdlen + 5)
     fail (1);
-  if (strncmp (out, cwd, cwdlen))
+  else if (strncmp (out, cwd, cwdlen))
     fail (1);
-  if (strcmp (out+cwdlen, "/./foo"))
+  else if (strcmp (out+cwdlen, "/./foo"))
     fail (1);
   xfree (out);
 
   out = make_absfilename_try (".", NULL);
   if (!out)
     fail (2);
-  if (strlen (out) < cwdlen)
+  else if (strlen (out) < cwdlen)
     fail (2);
-  if (strncmp (out, cwd, cwdlen))
+  else if (strncmp (out, cwd, cwdlen))
     fail (2);
-  if (strcmp (out+cwdlen, ""))
+  else if (strcmp (out+cwdlen, ""))
     fail (2);
   xfree (out);
 
index cb7cd39..a80aaff 100644 (file)
@@ -124,25 +124,28 @@ test_timegm (void)
       tp = gmtime (&now);
       if (!tp)
         fail (tidx);
-      tbuf = *tp;
-      tbuf2 = tbuf;
+      else
+        {
+          tbuf = *tp;
+          tbuf2 = tbuf;
 #ifdef HAVE_TIMEGM
-      atime = timegm (&tbuf);
+          atime = timegm (&tbuf);
 #else
-      atime = mktime (&tbuf);
+          atime = mktime (&tbuf);
 #endif
-      if (atime == (time_t)(-1))
-        fail (tidx);
-      if (atime != now)
-        fail (tidx);
-
-      tp = gmtime (&atime);
-      if (!tp)
-        fail (tidx);
-      if (cmp_time_s (tp, &tbuf))
-        fail (tidx);
-      if (cmp_time_s (tp, &tbuf2))
-        fail (tidx);
+          if (atime == (time_t)(-1))
+            fail (tidx);
+          else if (atime != now)
+            fail (tidx);
+
+          tp = gmtime (&atime);
+          if (!tp)
+            fail (tidx);
+          else if (cmp_time_s (tp, &tbuf))
+            fail (tidx);
+          else if (cmp_time_s (tp, &tbuf2))
+            fail (tidx);
+        }
     }
 }