AArch64 assembly pack: authenticate return addresses.
[openssl.git] / test / bio_memleak_test.c
1 /*
2  * Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
3  *
4  * Licensed under the OpenSSL license (the "License").  You may not use
5  * this file except in compliance with the License.  You can obtain a copy
6  * in the file LICENSE in the source distribution or at
7  * https://www.openssl.org/source/license.html
8  */
9 #include <stdio.h>
10 #include <string.h>
11 #include <openssl/buffer.h>
12 #include <openssl/bio.h>
13
14 #include "testutil.h"
15
16 static int test_bio_memleak(void)
17 {
18     int ok = 0;
19     BIO *bio;
20     BUF_MEM bufmem;
21     const char *str = "BIO test\n";
22     char buf[100];
23
24     bio = BIO_new(BIO_s_mem());
25     if (bio == NULL)
26         goto finish;
27     bufmem.length = strlen(str) + 1;
28     bufmem.data = (char *) str;
29     bufmem.max = bufmem.length;
30     BIO_set_mem_buf(bio, &bufmem, BIO_NOCLOSE);
31     BIO_set_flags(bio, BIO_FLAGS_MEM_RDONLY);
32
33     if (BIO_read(bio, buf, sizeof(buf)) <= 0)
34         goto finish;
35
36     ok = strcmp(buf, str) == 0;
37
38 finish:
39     BIO_free(bio);
40     return ok;
41 }
42
43 int global_init(void)
44 {
45     CRYPTO_set_mem_debug(1);
46     CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
47     return 1;
48 }
49
50 int setup_tests(void)
51 {
52     ADD_TEST(test_bio_memleak);
53     return 1;
54 }