[Pkg-gnupg-commit] [gnupg2] 79/159: common: Do not deref vars in tests after a fail().
Daniel Kahn Gillmor
dkg at fifthhorseman.net
Wed Jan 27 13:23:56 UTC 2016
This is an automated email from the git hooks/post-receive script.
dkg pushed a commit to branch master
in repository gnupg2.
commit 0a00115ee2049ab2357b7a14a51c7da185ffcabd
Author: Werner Koch <wk at gnupg.org>
Date: Wed Jan 6 08:31:38 2016 +0100
common: Do not deref vars in tests after a fail().
* 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 at gnupg.org>
---
common/t-convert.c | 8 ++++----
common/t-mapstrings.c | 4 ++--
common/t-stringhelp.c | 32 ++++++++++++++++----------------
common/t-timestuff.c | 35 +++++++++++++++++++----------------
4 files changed, 41 insertions(+), 38 deletions(-)
diff --git a/common/t-convert.c b/common/t-convert.c
index a03c680..ad33dff 100644
--- a/common/t-convert.c
+++ b/common/t-convert.c
@@ -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);
}
diff --git a/common/t-mapstrings.c b/common/t-mapstrings.c
index 88c6674..8f4c650 100644
--- a/common/t-mapstrings.c
+++ b/common/t-mapstrings.c
@@ -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);
diff --git a/common/t-stringhelp.c b/common/t-stringhelp.c
index e97b64a..af79cb5 100644
--- a/common/t-stringhelp.c
+++ b/common/t-stringhelp.c
@@ -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);
diff --git a/common/t-timestuff.c b/common/t-timestuff.c
index cb7cd39..a80aaff 100644
--- a/common/t-timestuff.c
+++ b/common/t-timestuff.c
@@ -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);
+ }
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git
More information about the Pkg-gnupg-commit
mailing list