The function strerror() is a vulnerable function because it is thread-unsafe.
Instead of this function, ttrace will use strerror_r() which guarantees thread-safety.
Change-Id: I904887011c404468a5660792efcf08c4a632366f
Signed-off-by: Sung-hun Kim <sfoon.kim@samsung.com>
#include <stdlib.h>
#include <string.h>
-#define CHECK_ARGS(COND, ERR) \
+#define BUF_MAX 255
+
+#define CHECK_ARGS(COND, ERR_BUF) \
"FAILED CHECK(%s) @ %s:%d (errno: %s)\n", #COND, __FILE__, __LINE__, \
- strerror(ERR)
+ ERR_BUF
#define CHECK(x) \
do { \
if (!(x)) { \
const int e = errno; \
- fprintf(stderr, "\n" CHECK_ARGS(x, e)); \
+ char errbuf[BUF_MAX]; \
+ strerror_r(e, errbuf, BUF_MAX); \
+ fprintf(stderr, "\n" CHECK_ARGS(x, errbuf)); \
fflush(stderr); \
abort(); \
} \