diff --git a/include/asterisk/test.h b/include/asterisk/test.h index 12aed650be..d2be92c6fd 100644 --- a/include/asterisk/test.h +++ b/include/asterisk/test.h @@ -438,6 +438,16 @@ int __ast_test_status_update(const char *file, const char *func, int line, struc } \ }) +/*! + * \brief Initialize the capture structure. + * + * \since 16.30.0, 18.16.0, 19.8.0, 20.1.0 + * + * \param capture The structure describing the child process and its + * associated output. + */ +void ast_test_capture_init(struct ast_test_capture *capture); + /*! * \brief Release the storage (buffers) associated with capturing * the output of an external child process. diff --git a/main/test.c b/main/test.c index 03de33bce9..f06b55718b 100644 --- a/main/test.c +++ b/main/test.c @@ -313,6 +313,12 @@ void ast_test_set_result(struct ast_test *test, enum ast_test_result_state state test->state = state; } +void ast_test_capture_init(struct ast_test_capture *capture) +{ + capture->outbuf = capture->errbuf = NULL; + capture->pid = capture->exitcode = -1; +} + void ast_test_capture_free(struct ast_test_capture *capture) { if (capture) { @@ -336,8 +342,7 @@ int ast_test_capture_command(struct ast_test_capture *capture, const char *file, int status = 0; FILE *cmd = NULL, *out = NULL, *err = NULL; - memset(capture, 0, sizeof(*capture)); - capture->pid = capture->exitcode = -1; + ast_test_capture_init(capture); if (data != NULL && datalen > 0) { if (pipe(fd0) == -1) { diff --git a/tests/test_crypto.c b/tests/test_crypto.c index a3a0004b3c..1eec181b99 100644 --- a/tests/test_crypto.c +++ b/tests/test_crypto.c @@ -105,6 +105,8 @@ AST_TEST_DEFINE(crypto_rsa_encrypt) ast_test_status_update(test, "Executing RSA encryption test\n"); + ast_test_capture_init(&cap); + if (!ast_check_command_in_path(command)) { ast_test_status_update(test, "couldn't find %s\n", command); return res; @@ -190,6 +192,8 @@ AST_TEST_DEFINE(crypto_rsa_decrypt) ast_test_status_update(test, "Executing RSA decryption test\n"); + ast_test_capture_init(&cap); + if (!ast_check_command_in_path(command)) { ast_test_status_update(test, "couldn't find %s\n", command); return res; @@ -285,6 +289,8 @@ AST_TEST_DEFINE(crypto_sign) ast_test_status_update(test, "Executing RSA signing test\n"); + ast_test_capture_init(&cap); + if (!ast_check_command_in_path(command)) { ast_test_status_update(test, "couldn't find %s\n", command); return res; @@ -396,6 +402,8 @@ AST_TEST_DEFINE(crypto_verify) ast_test_status_update(test, "Executing RSA signature verification test\n"); + ast_test_capture_init(&cap); + if (!ast_check_command_in_path(command)) { ast_test_status_update(test, "couldn't find %s\n", command); return res; @@ -491,6 +499,8 @@ AST_TEST_DEFINE(crypto_aes_encrypt) ast_test_status_update(test, "Executing AES-ECB encryption test\n"); + ast_test_capture_init(&cap); + if (!ast_check_command_in_path(command)) { ast_test_status_update(test, "couldn't find %s\n", command); return res; @@ -565,6 +575,8 @@ AST_TEST_DEFINE(crypto_aes_decrypt) ast_test_status_update(test, "Executing AES-ECB decryption test\n"); + ast_test_capture_init(&cap); + if (!ast_check_command_in_path(command)) { ast_test_status_update(test, "couldn't find %s\n", command); return res;