X509_cmp_time: only return 1, 0, -1.
authorEmilia Kasper <emilia@openssl.org>
Mon, 18 Dec 2017 17:41:05 +0000 (18:41 +0100)
committerRichard Levitte <levitte@openssl.org>
Thu, 19 Apr 2018 07:41:09 +0000 (09:41 +0200)
The behaviour of X509_cmp_time used to be undocumented.

The new behaviour, documented in master, is to return only 0, 1, or -1.
Make the code in the other branches to adhere to this behaviour too,
to reduce confusion. There is nothing to be gained from returning
other values.

Fixes GH#4954

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4955)

crypto/x509/x509_vfy.c

index 3018c69ae48ab09ad7395db8ccf6dbe06e03b991..b9b36c4ee0afe59f1ec34cb64faa219b02007ec5 100644 (file)
@@ -1865,10 +1865,11 @@ int X509_cmp_time(const ASN1_TIME *ctm, time_t *cmp_time)
             return 1;
     }
     i = strcmp(buff1, buff2);
-    if (i == 0)                 /* wait a second then return younger :-) */
-        return -1;
-    else
-        return i;
+    /*
+     * X509_cmp_time comparison is <=.
+     * The return value 0 is reserved for errors.
+     */
+    return i > 0 ? 1 : -1;
 }
 
 ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj)