Add optional (compile-time configurable) time to CRYPTO_mem_leaks output.
authorBodo Möller <bodo@openssl.org>
Sun, 18 Jul 1999 22:39:45 +0000 (22:39 +0000)
committerBodo Möller <bodo@openssl.org>
Sun, 18 Jul 1999 22:39:45 +0000 (22:39 +0000)
This is much more helpful than the counter when doing tests with the library
interactively.

Configure
crypto/mem.c

index b823037c335e8fd76eb9562250742ca312cb5d58..221ea7cc11d36917d13d02199e76aff5a828e6f2 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -97,7 +97,7 @@ my %table=(
 "debug-ben-debug",     "gcc:-DBN_DEBUG -DREF_CHECK -DCRYPTO_MDEBUG -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::",
 "debug-ben-strict",    "gcc:-DBN_DEBUG -DREF_CHECK -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown):::::",
 "debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown)::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_elf_asm",
-"debug-bodo",  "gcc:-DBIO_PAIR_DEBUG -DL_ENDIAN -DREF_CHECK -DCRYPTO_MDEBUG -g -m486 -Wall::-D_REENTRANT::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_elf_asm",
+"debug-bodo",  "gcc:-DBIO_PAIR_DEBUG -DL_ENDIAN -DREF_CHECK -DCRYPTO_MDEBUG -DCRYPTO_MDEBUG_TIME -g -m486 -Wall::-D_REENTRANT::BN_LLONG $x86_gcc_des $x86_gcc_opts:$x86_elf_asm",
 "dist",                "cc:-O::(unknown):::::",
 
 # Basic configs that should work on any box
index 8a74507716af6e2bee1852acf746178492578f4d..9693842ec338076e9c10f45bed0504c9c30c8c55 100644 (file)
@@ -58,6 +58,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#ifdef CRYPTO_MDEBUG_TIME
+# include <time.h>     
+#endif
 #include <openssl/buffer.h>
 #include <openssl/bio.h>
 #include <openssl/lhash.h>
@@ -89,6 +92,9 @@ typedef struct mem_st
        const char *file;
        int line;
        unsigned long order;
+#ifdef CRYPTO_MDEBUG_TIME
+       time_t time;
+#endif
        } MEM;
 
 int CRYPTO_mem_ctrl(int mode)
@@ -238,6 +244,9 @@ void *CRYPTO_dbg_malloc(int num, const char *file, int line)
                        m->order=order;
                        }
                m->order=order++;
+#ifdef CRYPTO_MDEBUG_TIME
+               m->time=time(NULL);
+#endif
                if ((mm=(MEM *)lh_insert(mh,(char *)m)) != NULL)
                        {
                        /* Not good, but don't sweat it */
@@ -322,8 +331,17 @@ static void print_leak(MEM *m, MEM_LEAK *l)
 
        if(m->addr == (char *)l->bio)
            return;
+#ifdef CRYPTO_MDEBUG_TIME
+       {
+       struct tm *lcl = localtime(&m->time);
+       sprintf(buf,"[%02d:%02d:%02d] %5lu file=%s, line=%d, number=%d, address=%08lX\n",
+               lcl->tm_hour,lcl->tm_min,lcl->tm_sec,
+               m->order,m->file,m->line,m->num,(unsigned long)m->addr);
+       }
+#else
        sprintf(buf,"%5lu file=%s, line=%d, number=%d, address=%08lX\n",
                m->order,m->file,m->line,m->num,(unsigned long)m->addr);
+#endif
        BIO_puts(l->bio,buf);
        l->chunks++;
        l->bytes+=m->num;