Commit 4e1ff3a1 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Detect dangerous use of environment variables at run-time

parent d8c9ed53
......@@ -77,4 +77,43 @@ static void *getsym (const char *name)
({ typeof (func) *sym = getsym ( # func); sym (__VA_ARGS__); })
/*** Environment ***
*
* "Conforming multi-threaded applications shall not use the environ variable
* to access or modify any environment variable while any other thread is
* concurrently modifying any environment variable." -- POSIX.
*
* Some evil libraries modify the environment. We currently ignore the calls as
* they could crash the process. This may cause funny behaviour though. */
int putenv (char *str)
{
if (override)
{
LOG("Blocked", "\"%s\"", str);
return 0;
}
return CALL(putenv, str);
}
int setenv (const char *name, const char *value, int overwrite)
{
if (override)
{
LOG("Blocked", "\"%s\", \"%s\", %d", name, value, overwrite);
return 0;
}
return CALL(setenv, name, value, overwrite);
}
int unsetenv (const char *name)
{
if (override)
{
LOG("Blocked", "\"%s\"", name);
return 0;
}
return CALL(unsetenv, name);
}
#endif /* __ELF__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment