Ensure no memory is leaked after passing NULL to ASN1_TIME_normalize()
authorjob <job@openbsd.org>
Wed, 30 Aug 2023 10:13:12 +0000 (10:13 +0000)
committerjob <job@openbsd.org>
Wed, 30 Aug 2023 10:13:12 +0000 (10:13 +0000)
OK tb@

lib/libcrypto/asn1/a_time_tm.c
regress/lib/libcrypto/asn1/asn1time.c

index 9cdac73..556e12a 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: a_time_tm.c,v 1.29 2023/07/07 19:37:52 beck Exp $ */
+/* $OpenBSD: a_time_tm.c,v 1.30 2023/08/30 10:13:12 job Exp $ */
 /*
  * Copyright (c) 2015 Bob Beck <beck@openbsd.org>
  *
@@ -610,6 +610,8 @@ ASN1_TIME_normalize(ASN1_TIME *t)
 {
        struct tm tm;
 
+       if (t == NULL)
+               return 0;
        if (!ASN1_TIME_to_tm(t, &tm))
                return 0;
        return tm_to_rfc5280_time(&tm, t) != NULL;
index 0adac08..65c36df 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: asn1time.c,v 1.16 2022/09/05 21:06:31 tb Exp $ */
+/* $OpenBSD: asn1time.c,v 1.17 2023/08/30 10:13:12 job Exp $ */
 /*
  * Copyright (c) 2015 Joel Sing <jsing@openbsd.org>
  *
@@ -528,5 +528,8 @@ main(int argc, char **argv)
                failed |= asn1_time_test(i, att, V_ASN1_GENERALIZEDTIME);
        }
 
+       /* Check for a leak in ASN1_TIME_normalize(). */
+       failed |= ASN1_TIME_normalize(NULL) != 0;
+
        return (failed);
 }