/*
- * 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
{
int ret = 0;
tracedata *trace_data = vdata;
- union {
- CRYPTO_THREAD_ID tid;
- unsigned long ltid;
- } tid;
- char buffer[256];
+ char buffer[256], *hex;
+ CRYPTO_THREAD_ID tid;
switch (cmd) {
case OSSL_TRACE_CTRL_BEGIN:
return 0;
trace_data->ingroup = 1;
- tid.ltid = 0;
- tid.tid = CRYPTO_THREAD_get_current_id();
-
- BIO_snprintf(buffer, sizeof(buffer), "TRACE[%lx]:%s: ", tid.ltid,
- OSSL_trace_get_category_name(category));
+ tid = CRYPTO_THREAD_get_current_id();
+ hex = OPENSSL_buf2hexstr((const unsigned char *)&tid, sizeof(tid));
+ BIO_snprintf(buffer, sizeof(buffer), "TRACE[%s]:%s: ",
+ hex, OSSL_trace_get_category_name(category));
+ OPENSSL_free(hex);
BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX,
strlen(buffer), buffer);
break;
/*
- * Copyright 1995-2017 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
void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u),
void *u)
{
+ CRYPTO_THREAD_ID tid = CRYPTO_THREAD_get_current_id();
unsigned long l;
char buf[256];
- char buf2[4096];
+ char buf2[4096], *hex;
const char *file, *data;
int line, flags;
- /*
- * We don't know what kind of thing CRYPTO_THREAD_ID is. Here is our best
- * attempt to convert it into something we can print.
- */
- union {
- CRYPTO_THREAD_ID tid;
- unsigned long ltid;
- } tid;
-
- tid.ltid = 0;
- tid.tid = CRYPTO_THREAD_get_current_id();
while ((l = ERR_get_error_line_data(&file, &line, &data, &flags)) != 0) {
ERR_error_string_n(l, buf, sizeof(buf));
- BIO_snprintf(buf2, sizeof(buf2), "%lu:%s:%s:%d:%s\n", tid.ltid, buf,
- file, line, (flags & ERR_TXT_STRING) ? data : "");
+ hex = OPENSSL_buf2hexstr((const unsigned char *)&tid, sizeof(tid));
+ BIO_snprintf(buf2, sizeof(buf2), "%s:%s:%s:%d:%s\n", hex, buf, file,
+ line, (flags & ERR_TXT_STRING) ? data : "");
+ OPENSSL_free(hex);
if (cb(buf2, strlen(buf2), u) <= 0)
break; /* abort outputting the error report */
}
/*
- * 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
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);
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;
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;
/*
- * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-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
{
int ret = 0;
tracedata *trace_data = vdata;
- union {
- CRYPTO_THREAD_ID tid;
- unsigned long ltid;
- } tid;
- char buffer[256];
+ char buffer[256], *hex;
+ CRYPTO_THREAD_ID tid;
switch (cmd) {
case OSSL_TRACE_CTRL_BEGIN:
trace_data->ingroup = 1;
- tid.ltid = 0;
- tid.tid = CRYPTO_THREAD_get_current_id();
-
- BIO_snprintf(buffer, sizeof(buffer), "TRACE[%lx]:%s: ", tid.ltid,
- OSSL_trace_get_category_name(category));
+ tid = CRYPTO_THREAD_get_current_id();
+ hex = OPENSSL_buf2hexstr((const unsigned char *)&tid, sizeof(tid));
+ BIO_snprintf(buffer, sizeof(buffer), "TRACE[%s]:%s: ",
+ hex, OSSL_trace_get_category_name(category));
+ OPENSSL_free(hex);
BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX,
strlen(buffer), buffer);
break;