| Index: sandbox/linux/suid/common/suid_unsafe_environment_variables.h
|
| diff --git a/sandbox/linux/suid/suid_unsafe_environment_variables.h b/sandbox/linux/suid/common/suid_unsafe_environment_variables.h
|
| similarity index 85%
|
| rename from sandbox/linux/suid/suid_unsafe_environment_variables.h
|
| rename to sandbox/linux/suid/common/suid_unsafe_environment_variables.h
|
| index 4e3329f439357308fc227318b30aa09e8c4b2f11..ee4db76c299a239077767af6e5a24907b63580bb 100644
|
| --- a/sandbox/linux/suid/suid_unsafe_environment_variables.h
|
| +++ b/sandbox/linux/suid/common/suid_unsafe_environment_variables.h
|
| @@ -16,6 +16,14 @@
|
| #ifndef SANDBOX_LINUX_SUID_SUID_UNSAFE_ENVIRONMENT_VARIABLES_H_
|
| #define SANDBOX_LINUX_SUID_SUID_UNSAFE_ENVIRONMENT_VARIABLES_H_
|
|
|
| +#if defined(__cplusplus)
|
| +#include <limits>
|
| +#define SIZE_MAX std::numeric_limits<size_t>::max()
|
| +#endif
|
| +
|
| +#include <stdlib.h> // malloc
|
| +#include <string.h> // memcpy
|
| +
|
| static const char* kSUIDUnsafeEnvironmentVariables[] = {
|
| "LD_AOUT_LIBRARY_PATH",
|
| "LD_AOUT_PRELOAD",
|
| @@ -48,8 +56,12 @@ static const char* kSUIDUnsafeEnvironmentVariables[] = {
|
| // name for a given environment variable.
|
| static inline char* SandboxSavedEnvironmentVariable(const char* envvar) {
|
| const size_t envvar_len = strlen(envvar);
|
| +
|
| + if (envvar_len > SIZE_MAX - 1 -8)
|
| + return NULL;
|
| +
|
| const size_t saved_envvarlen = envvar_len + 1 /* NUL terminator */ +
|
| - 8 /* strlen("SANDBOX_") */;
|
| + 8 /* strlen("SANDBOX_") */;
|
| char* const saved_envvar = (char*) malloc(saved_envvarlen);
|
| if (!saved_envvar)
|
| return NULL;
|
| @@ -61,4 +73,8 @@ static inline char* SandboxSavedEnvironmentVariable(const char* envvar) {
|
| return saved_envvar;
|
| }
|
|
|
| +#if defined(__cplusplus)
|
| +#undef SIZE_MAX
|
| +#endif
|
| +
|
| #endif // SANDBOX_LINUX_SUID_SUID_UNSAFE_ENVIRONMENT_VARIABLES_H_
|
|
|