fix errtest to be less sensitive to line wrapping changes

(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)
This commit is contained in:
Bob Beck
2025-08-29 11:37:36 -06:00
committed by Tomas Mraz
parent 220350f337
commit b8a0108998
+9 -18
View 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;
}