summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAliaksey Kandratsenka <alk@tut.by>2014-08-19 08:14:08 -0700
committerAliaksey Kandratsenka <alk@tut.by>2014-08-19 08:30:07 -0700
commit3c326d9f200a527bba45f1d222aa6aff20d42bc3 (patch)
tree230bc3e669a69672763f93f06c3e7e0ffe551626
parentf1ae3c446f34f6e8ac901caba281051ec269e4df (diff)
downloadgperftools-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.cc3
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 =
}