f7edeced4d
Still needs to be documented, somehow/somewhere. The env var OPENSSL_MALLOC_FAILURES controls how often malloc/realloc should fail. It's a set of fields separated by semicolons. Each field is a count and optional percentage (separated by @) which defaults to 100. If count is zero then it lasts "forever." For example: 100;@25 means the first 100 allocations pass, then the rest have a 25% chance of failing until the program exits or crashes. If env var OPENSSL_MALLOC_FD parses as a positive integer, a record of all malloc "shouldfail" tests is written to that file descriptor. If a malloc will fail, and OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE is not set (platform specific), then a backtrace will be written to the descriptor when a malloc fails. This can be useful because a malloc may fail but not be checked, and problems will only occur later. Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/1252)
32 lines
939 B
C
32 lines
939 B
C
/*
|
|
* Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
|
|
*
|
|
* Licensed under the OpenSSL license (the "License"). You may not use
|
|
* this file except in compliance with the License. You can obtain a copy
|
|
* in the file LICENSE in the source distribution or at
|
|
* https://www.openssl.org/source/license.html
|
|
*/
|
|
|
|
#include <internal/cryptlib.h>
|
|
|
|
/* This file is not scanned by mkdef.pl, whereas cryptlib.h is */
|
|
|
|
struct thread_local_inits_st {
|
|
int async;
|
|
int err_state;
|
|
};
|
|
|
|
int ossl_init_thread_start(uint64_t opts);
|
|
|
|
/*
|
|
* OPENSSL_INIT flags. The primary list of these is in crypto.h. Flags below
|
|
* are those omitted from crypto.h because they are "reserved for internal
|
|
* use".
|
|
*/
|
|
# define OPENSSL_INIT_ZLIB 0x00010000L
|
|
|
|
/* OPENSSL_INIT_THREAD flags */
|
|
# define OPENSSL_INIT_THREAD_ASYNC 0x01
|
|
# define OPENSSL_INIT_THREAD_ERR_STATE 0x02
|
|
|
|
void ossl_malloc_setup_failures(void);
|