]> git.ipfire.org Git - thirdparty/openssl.git/blob - test/bio_memleak_test.c
Do buildtests on our public header files with C++ as well
[thirdparty/openssl.git] / test / bio_memleak_test.c
1 /*
2 * Copyright 2018-2019 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 }