X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fmem_dbg.c;h=1c4e04f51fc480f70e655815157096a9ef40efa5;hb=cd4c36adb8cf159a1ea86a3e0b1ff2f222016937;hp=5086bcde15c4457c1a525d58bf48ed9138087911;hpb=32654e792b8863024cfaff8e22cd1d53a5ff5626;p=oweals%2Fopenssl.git diff --git a/crypto/mem_dbg.c b/crypto/mem_dbg.c index 5086bcde15..1c4e04f51f 100644 --- a/crypto/mem_dbg.c +++ b/crypto/mem_dbg.c @@ -238,8 +238,8 @@ long CRYPTO_dbg_get_options(void) /* static int mem_cmp(MEM *a, MEM *b) */ static int mem_cmp(const void *a_void, const void *b_void) { - return((const char *)((MEM *)a_void)->addr - - (const char *)((MEM *)b_void)->addr); + return((const char *)((const MEM *)a_void)->addr + - (const char *)((const MEM *)b_void)->addr); } /* static unsigned long mem_hash(MEM *a) */ @@ -576,7 +576,7 @@ typedef struct mem_leak_st long bytes; } MEM_LEAK; -static void print_leak(MEM *m, MEM_LEAK *l) +static void print_leak(const MEM *m, MEM_LEAK *l) { char buf[1024]; char *bufp = buf; @@ -661,7 +661,7 @@ static void print_leak(MEM *m, MEM_LEAK *l) #endif } -static IMPLEMENT_LHASH_DOALL_ARG_FN(print_leak, MEM *, MEM_LEAK *) +static IMPLEMENT_LHASH_DOALL_ARG_FN(print_leak, const MEM *, MEM_LEAK *) void CRYPTO_mem_leaks(BIO *b) { @@ -737,8 +737,13 @@ void CRYPTO_mem_leaks_fp(FILE *fp) BIO *b; if (mh == NULL) return; - if ((b=BIO_new(BIO_s_file())) == NULL) - return; + /* Need to turn off memory checking when allocated BIOs ... especially + * as we're creating them at a time when we're trying to check we've not + * left anything un-free()'d!! */ + MemCheck_off(); + b = BIO_new(BIO_s_file()); + MemCheck_on(); + if(!b) return; BIO_set_fp(b,fp,BIO_NOCLOSE); CRYPTO_mem_leaks(b); BIO_free(b); @@ -753,12 +758,12 @@ void CRYPTO_mem_leaks_fp(FILE *fp) /* NB: The prototypes have been typedef'd to CRYPTO_MEM_LEAK_CB inside crypto.h * If this code is restructured, remove the callback type if it is no longer * needed. -- Geoff Thorpe */ -static void cb_leak(MEM *m, CRYPTO_MEM_LEAK_CB **cb) +static void cb_leak(const MEM *m, CRYPTO_MEM_LEAK_CB **cb) { (**cb)(m->order,m->file,m->line,m->num,m->addr); } -static IMPLEMENT_LHASH_DOALL_ARG_FN(cb_leak, MEM *, CRYPTO_MEM_LEAK_CB **) +static IMPLEMENT_LHASH_DOALL_ARG_FN(cb_leak, const MEM *, CRYPTO_MEM_LEAK_CB **) void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb) {