summaryrefslogtreecommitdiffstats
path: root/test/evp_test.c
diff options
context:
space:
mode:
authorPauli <paul.dale@oracle.com>2017-02-27 14:26:16 +1000
committerRich Salz <rsalz@openssl.org>2017-02-28 09:14:50 -0500
commit533b178db6aea206f07810ea20ecd43a90c51855 (patch)
treea6358005719fe240ea28115fc1e4e53832b1219e /test/evp_test.c
parentfa7e9ed3d16c7e713b67a84de9683837610cd318 (diff)
Avoid buffer underflow in evp_test.
The second loop in the remove_space function doesn't check for walking back off of the start of the string while setting white space to 0. This fix exits this loop once the pointer is before the (updated) beginning of the string. Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/2752)
Diffstat (limited to 'test/evp_test.c')
-rw-r--r--test/evp_test.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/test/evp_test.c b/test/evp_test.c
index 494a46b318..d924e3f6fc 100644
--- a/test/evp_test.c
+++ b/test/evp_test.c
@@ -23,17 +23,17 @@
static void remove_space(char **pval)
{
- unsigned char *p = (unsigned char *)*pval;
+ unsigned char *p = (unsigned char *)*pval, *beginning;
while (isspace(*p))
p++;
- *pval = (char *)p;
+ *pval = (char *)(beginning = p);
p = p + strlen(*pval) - 1;
/* Remove trailing space */
- while (isspace(*p))
+ while (p >= beginning && isspace(*p))
*p-- = 0;
}