diff options
author | Aliaksey Kandratsenka <alk@tut.by> | 2014-08-19 08:14:08 -0700 |
---|---|---|
committer | Aliaksey Kandratsenka <alk@tut.by> | 2014-08-19 08:30:07 -0700 |
commit | 3c326d9f200a527bba45f1d222aa6aff20d42bc3 (patch) | |
tree | 230bc3e669a69672763f93f06c3e7e0ffe551626 | |
parent | f1ae3c446f34f6e8ac901caba281051ec269e4df (diff) | |
download | gperftools-3c326d9f200a527bba45f1d222aa6aff20d42bc3.tar.gz |
issue-644: fix possible out-of-bounds access in GetenvBeforeMain
As suggested by user Ivan L.
-rw-r--r-- | src/base/sysinfo.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/base/sysinfo.cc b/src/base/sysinfo.cc index ca76328..cad751b 100644 --- a/src/base/sysinfo.cc +++ b/src/base/sysinfo.cc @@ -124,6 +124,9 @@ const char* GetenvBeforeMain(const char* name) { if (__environ) { // can exist but be NULL, if statically linked const int namelen = strlen(name); for (char** p = __environ; *p; p++) { + if (strlen(*p) < namelen) { + continue; + } if (!memcmp(*p, name, namelen) && (*p)[namelen] == '=') // it's a match return *p + namelen+1; // point after = } |