diff options
author | John Wiegley <johnw@newartisans.com> | 2009-10-31 04:17:40 -0400 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2009-10-31 04:17:40 -0400 |
commit | 97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2 (patch) | |
tree | 8eadb82cc54e66353e05309fe42c2900b93628bf /src/option.cc | |
parent | a2cb549b1dff9024e3f700203e424e496b25fd91 (diff) | |
parent | a0a980b9f4ebf1493682ecf1eb745bf52649aac5 (diff) | |
download | ledger-97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2.tar.gz ledger-97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2.tar.bz2 ledger-97a9b42b2c5ef908e0c47ecfd39771a79f8fa8a2.zip |
Merge branch 'next'
Diffstat (limited to 'src/option.cc')
-rw-r--r-- | src/option.cc | 9 |
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++ = '-'; |