summaryrefslogtreecommitdiff
path: root/src/option.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2009-10-31 04:17:40 -0400
committerJohn Wiegley <johnw@newartisans.com>2009-10-31 04:17:40 -0400
commit97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2 (patch)
tree8eadb82cc54e66353e05309fe42c2900b93628bf /src/option.cc
parenta2cb549b1dff9024e3f700203e424e496b25fd91 (diff)
parenta0a980b9f4ebf1493682ecf1eb745bf52649aac5 (diff)
downloadledger-97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2.tar.gz
ledger-97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2.tar.bz2
ledger-97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2.zip
Merge branch 'next'
Diffstat (limited to 'src/option.cc')
-rw-r--r--src/option.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/option.cc b/src/option.cc
index 883080e2..8da66b36 100644
--- a/src/option.cc
+++ b/src/option.cc
@@ -116,13 +116,16 @@ void process_environment(const char ** envp, const string& tag,
const char * tag_p = tag.c_str();
string::size_type tag_len = tag.length();
+ assert(tag_p);
+ assert(tag_len > 0);
+
for (const char ** p = envp; *p; p++) {
- if (! tag_p || std::strncmp(*p, tag_p, tag_len) == 0) {
- char buf[128];
+ if (std::strlen(*p) >= tag_len && std::strncmp(*p, tag_p, tag_len) == 0) {
+ char buf[8192];
char * r = buf;
const char * q;
for (q = *p + tag_len;
- *q && *q != '=' && r - buf < 128;
+ *q && *q != '=' && r - buf < 8191;
q++)
if (*q == '_')
*r++ = '-';