diff options
Diffstat (limited to 'crypto/mem_dbg.c')
-rw-r--r-- | crypto/mem_dbg.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/crypto/mem_dbg.c b/crypto/mem_dbg.c index 703cc30c78..8fcdbeca9e 100644 --- a/crypto/mem_dbg.c +++ b/crypto/mem_dbg.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -455,20 +455,11 @@ typedef struct mem_leak_st { static void print_leak(const MEM *m, MEM_LEAK *l) { char buf[1024]; - char *bufp = buf; + char *bufp = buf, *hex; size_t len = sizeof(buf), ami_cnt; APP_INFO *amip; int n; struct tm *lcl = NULL; - /* - * Convert between CRYPTO_THREAD_ID (which could be anything at all) and - * a long. This may not be meaningful depending on what CRYPTO_THREAD_ID is - * but hopefully should give something sensible on most platforms - */ - union { - CRYPTO_THREAD_ID tid; - unsigned long ltid; - } tid; CRYPTO_THREAD_ID ti; lcl = localtime(&m->time); @@ -488,15 +479,11 @@ static void print_leak(const MEM *m, MEM_LEAK *l) bufp += n; len -= n; - tid.ltid = 0; - tid.tid = m->threadid; - n = BIO_snprintf(bufp, len, "thread=%lu, ", tid.ltid); - if (n <= 0) - return; - bufp += n; - len -= n; - - n = BIO_snprintf(bufp, len, "number=%d, address=%p\n", m->num, m->addr); + hex = OPENSSL_buf2hexstr((const unsigned char *)&m->threadid, + sizeof(m->threadid)); + n = BIO_snprintf(bufp, len, "thread=%s, number=%d, address=%p\n", hex, + m->num, m->addr); + OPENSSL_free(hex); if (n <= 0) return; bufp += n; @@ -522,11 +509,12 @@ static void print_leak(const MEM *m, MEM_LEAK *l) break; memset(buf, '>', ami_cnt); buf[ami_cnt] = '\0'; - tid.ltid = 0; - tid.tid = amip->threadid; + hex = OPENSSL_buf2hexstr((const unsigned char *)&amip->threadid, + sizeof(amip->threadid)); n = BIO_snprintf(buf + ami_cnt, sizeof(buf) - ami_cnt, - " thread=%lu, file=%s, line=%d, info=\"", - tid.ltid, amip->file, amip->line); + "thread=%s, file=%s, line=%d, info=\"", + hex, amip->file, amip->line); + OPENSSL_free(hex); if (n <= 0) break; buf_len = ami_cnt + n; |