From a4cb96da7ca45ebbe794aa28a28b847017f23864 Mon Sep 17 00:00:00 2001 From: Andreas Schultz Date: Wed, 30 Mar 2016 10:14:12 +0200 Subject: [PATCH] save and restore errno in logging function this makes it save to use logging functions in statements that expect errno to be unchanged --- src/common/capwap_logging.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/common/capwap_logging.c b/src/common/capwap_logging.c index 64d8e30..2e82c69 100644 --- a/src/common/capwap_logging.c +++ b/src/common/capwap_logging.c @@ -107,11 +107,13 @@ void capwap_logging_disable_console(void) { /* */ #ifdef ENABLE_LOGGING -void capwap_logging_printf(int level, const char* format, ...) { +void capwap_logging_printf(int level, const char* format, ...) +{ + int errsv = errno; va_list args; char prefix[256]; - va_start(args, format); + va_start(args, format); #ifdef CAPWAP_MULTITHREADING_ENABLE capwap_lock_enter(&l_loglock); @@ -135,10 +137,13 @@ void capwap_logging_printf(int level, const char* format, ...) { #endif va_end(args); + + errno = errsv; } void capwap_logging_hexdump(int level, const char *title, const unsigned char *data, size_t len) { + int errsv = errno; char prefix[256]; if ((logginglevel == CAPWAP_LOGGING_NONE) || @@ -185,6 +190,8 @@ void capwap_logging_hexdump(int level, const char *title, const unsigned char *d #ifdef CAPWAP_MULTITHREADING_ENABLE capwap_lock_exit(&l_loglock); #endif + + errno = errsv; } #endif