]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_crypto: Memory issues and uninitialized variable errors
authorGeorge Joseph <gjoseph@digium.com>
Fri, 16 Sep 2022 14:58:40 +0000 (08:58 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Mon, 19 Sep 2022 11:33:04 +0000 (05:33 -0600)
ASTERISK-30235

Change-Id: Ia1e326e7b52cd06fd5e6c9009e3e63193c92f6cd

main/test.c
tests/test_crypto.c

index 747262c7bfb89ca8bd871e01f91efe531d25d62d..03de33bce96e89366935ea1f653dfdd2811cc462 100644 (file)
@@ -316,9 +316,13 @@ void ast_test_set_result(struct ast_test *test, enum ast_test_result_state state
 void ast_test_capture_free(struct ast_test_capture *capture)
 {
        if (capture) {
-               free(capture->outbuf);
+               /*
+                * Need to use ast_std_free because this memory wasn't
+                * allocated by the astmm functions.
+                */
+               ast_std_free(capture->outbuf);
                capture->outbuf = NULL;
-               free(capture->errbuf);
+               ast_std_free(capture->errbuf);
                capture->errbuf = NULL;
        }
        capture->pid = -1;
@@ -330,6 +334,7 @@ int ast_test_capture_command(struct ast_test_capture *capture, const char *file,
        int fd0[2] = { -1, -1 }, fd1[2] = { -1, -1 }, fd2[2] = { -1, -1 };
        pid_t pid = -1;
        int status = 0;
+       FILE *cmd = NULL, *out = NULL, *err = NULL;
 
        memset(capture, 0, sizeof(*capture));
        capture->pid = capture->exitcode = -1;
@@ -379,8 +384,6 @@ int ast_test_capture_command(struct ast_test_capture *capture, const char *file,
                exit(1);
 
        } else {
-               FILE *cmd = NULL, *out = NULL, *err = NULL;
-
                char buf[BUFSIZ];
                int wstatus, n, nfds;
                fd_set readfds, writefds;
index 141781bfe02a84b32a969959dda847fa46395898..a3a0004b3ce49ab943c4428b0c381045ae0dc419 100644 (file)
@@ -49,7 +49,7 @@ static const char *old_key_dir = NULL;
 
 static char *hexstring(const unsigned char *data, unsigned datalen)
 {
-       char *buf = alloca(datalen * 2 + 1);
+       char *buf = ast_malloc(datalen * 2 + 1);
        unsigned n;
 
        for (n = 0; n < datalen; ++n) {
@@ -532,6 +532,7 @@ AST_TEST_DEFINE(crypto_aes_encrypt)
        res = AST_TEST_PASS;
 
 cleanup:
+       ast_free(args[KEY]);
        ast_test_capture_free(&cap);
        return res;
 }
@@ -610,6 +611,7 @@ AST_TEST_DEFINE(crypto_aes_decrypt)
        res = AST_TEST_PASS;
 
 cleanup:
+       ast_free(args[KEY]);
        ast_test_capture_free(&cap);
        return res;
 }