Avoid clobbering errno in warning().
This commit is contained in:
@@ -183,6 +183,7 @@ static void
|
|||||||
warning(const char *errstr, const char *fmt, va_list ap)
|
warning(const char *errstr, const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
int cookie;
|
int cookie;
|
||||||
|
const int saved_errno = errno;
|
||||||
|
|
||||||
/* Set user locale if setter was specified. */
|
/* Set user locale if setter was specified. */
|
||||||
if (sudo_warn_setlocale != NULL)
|
if (sudo_warn_setlocale != NULL)
|
||||||
@@ -246,6 +247,9 @@ warning(const char *errstr, const char *fmt, va_list ap)
|
|||||||
/* Restore old locale as needed. */
|
/* Restore old locale as needed. */
|
||||||
if (sudo_warn_setlocale != NULL)
|
if (sudo_warn_setlocale != NULL)
|
||||||
sudo_warn_setlocale(true, &cookie);
|
sudo_warn_setlocale(true, &cookie);
|
||||||
|
|
||||||
|
/* Do not clobber errno. */
|
||||||
|
errno = saved_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user