mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 13:43:47 +01:00
07cca627ea
On FreeBSD backtrace(3) uses size_t instead of int (as glibc does). This causes integer precision loss errors when we used int to store its results. The issue is fixed by using size_t to store the results of backtrace(3). The manual page of glibc does not mention that backtrace(3) returns negative values. Therefore, no unsigned integer wrapping occurs when its result is stored in an unsigned data type.
22 lines
582 B
C
22 lines
582 B
C
/* Copyright (c) 2013-2015, The Tor Project, Inc. */
|
|
/* See LICENSE for licensing information */
|
|
|
|
#ifndef TOR_BACKTRACE_H
|
|
#define TOR_BACKTRACE_H
|
|
|
|
#include "orconfig.h"
|
|
|
|
void log_backtrace(int severity, int domain, const char *msg);
|
|
int configure_backtrace_handler(const char *tor_version);
|
|
void clean_up_backtrace_handler(void);
|
|
|
|
#ifdef EXPOSE_CLEAN_BACKTRACE
|
|
#if defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && \
|
|
defined(HAVE_BACKTRACE_SYMBOLS_FD) && defined(HAVE_SIGACTION)
|
|
void clean_backtrace(void **stack, size_t depth, const ucontext_t *ctx);
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
|