mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-30 22:05:36 +00:00
log: Don't modify global @errno in __print_on_level
The __print_on_level routine may modify global @errno variable which is inacceptable: this is logging routine which must be transparent to the rest of the program code. Thus save @errno in local @__errno variable and restore it on return. Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Acked-by: Andrew Vagin <avagin@parallels.com> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
committed by
Pavel Emelyanov
parent
019ab4b795
commit
f76a57c29a
2
log.c
2
log.c
@@ -155,6 +155,7 @@ unsigned int log_get_loglevel(void)
|
|||||||
static void __print_on_level(unsigned int loglevel, const char *format, va_list params)
|
static void __print_on_level(unsigned int loglevel, const char *format, va_list params)
|
||||||
{
|
{
|
||||||
int fd, size, ret, off = 0;
|
int fd, size, ret, off = 0;
|
||||||
|
int __errno = errno;
|
||||||
|
|
||||||
if (unlikely(loglevel == LOG_MSG)) {
|
if (unlikely(loglevel == LOG_MSG)) {
|
||||||
fd = STDOUT_FILENO;
|
fd = STDOUT_FILENO;
|
||||||
@@ -176,6 +177,7 @@ static void __print_on_level(unsigned int loglevel, const char *format, va_list
|
|||||||
break;
|
break;
|
||||||
off += ret;
|
off += ret;
|
||||||
}
|
}
|
||||||
|
errno = __errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_on_level(unsigned int loglevel, const char *format, ...)
|
void print_on_level(unsigned int loglevel, const char *format, ...)
|
||||||
|
Reference in New Issue
Block a user