Catch unsafe (but alas common) strerror()

This commit is contained in:
Rémi Denis-Courmont 2010-04-18 17:32:19 +03:00
parent c37501542c
commit b67a5864cb
1 changed files with 15 additions and 0 deletions

View File

@ -33,6 +33,7 @@ void vlc_enable_override (void);
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#include <pthread.h>
#ifdef HAVE_EXECINFO_H
@ -260,6 +261,20 @@ char *setlocale (int cat, const char *locale)
}
/* strerror() is not thread-safe in theory (POSIX), nor in practice (glibc).
* This caused quite nasty crashes in the history of VLC/Linux. */
char *strerror (int val)
{
if (override)
{
static const char msg[] =
"Error message unavailable (use strerror_r instead of strerror)!";
LOG("Blocked", "%d", val);
return (char *)msg;
}
return CALL(strerror, val);
}
/*** Xlib ****/
#ifdef HAVE_X11_XLIB_H
# include <X11/Xlib.h>