]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
fix errtest to be less sensitive to line wrapping changes
authorBob Beck <beck@openssl.org>
Fri, 29 Aug 2025 17:37:36 +0000 (11:37 -0600)
committerTomas Mraz <tomas@openssl.org>
Wed, 3 Dec 2025 13:40:56 +0000 (14:40 +0100)
(in it's final form it will work with either compiler
because it's currently one line, but was tripped up before
by the #ifdef, so redid it to be consistent with the
other changes previously in this stack)

While I am here correct the test to test for all possible
return values of ERR_get_error_all, without the #ifdefs

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/29241)

test/errtest.c

index 2a66b483fec95d8ae55f1c553f6cecfd808be256..423a877185ddccc652c1c78bf7b9137f5cf25daf 100644 (file)
@@ -141,30 +141,21 @@ static int vdata_appends(void)
 
 static int raised_error(void)
 {
-    const char *f, *data;
-    int l;
+    int l, start_line = -1, end_line = -1;
+    const char *f, *data, *file = NULL;
     unsigned long e;
 
-    /*
-     * When OPENSSL_NO_ERR or OPENSSL_NO_FILENAMES, no file name or line
-     * number is saved, so no point checking them.
-     */
-#if !defined(OPENSSL_NO_FILENAMES) && !defined(OPENSSL_NO_ERR)
-    const char *file;
-    int line;
-
     file = __FILE__;
-    line = __LINE__ + 2; /* The error is generated on the ERR_raise_data line */
-#endif
+
+    start_line = __LINE__ + 1;
     ERR_raise_data(ERR_LIB_NONE, ERR_R_INTERNAL_ERROR,
                    "calling exit()");
+    end_line = __LINE__ - 1;
     if (!TEST_ulong_ne(e = ERR_get_error_all(&f, &l, NULL, &data, NULL), 0)
-            || !TEST_int_eq(ERR_GET_REASON(e), ERR_R_INTERNAL_ERROR)
-#if !defined(OPENSSL_NO_FILENAMES) && !defined(OPENSSL_NO_ERR)
-            || !TEST_int_eq(l, line)
-            || !TEST_str_eq(f, file)
-#endif
-            || !TEST_str_eq(data, "calling exit()"))
+        || !TEST_int_eq(ERR_GET_REASON(e), ERR_R_INTERNAL_ERROR)
+        || (l > 0 && !(TEST_int_eq(l, start_line) || TEST_int_eq(l, end_line)))
+        || (strlen(f) != 0 && !TEST_str_eq(f, file))
+        || !TEST_str_eq(data, "calling exit()"))
         return 0;
     return 1;
 }