diff options
author | Philippe Muller <philippe.muller@gmail.com> | 2013-03-20 09:27:04 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2013-03-20 09:27:34 +0100 |
commit | 619c70d31f33deb8538636ac1302a2d4032a844e (patch) | |
tree | 8b9d21c93f63cd608c9dc90daa475861a93ad600 | |
parent | 83c1920d7a6e675f1f433b047e8ed4e50e1050af (diff) | |
download | rsyslog-619c70d31f33deb8538636ac1302a2d4032a844e.tar.gz rsyslog-619c70d31f33deb8538636ac1302a2d4032a844e.tar.bz2 rsyslog-619c70d31f33deb8538636ac1302a2d4032a844e.zip |
bugfix: RainerScript getenv() function caused segfault when var was not found
This patch is released under ASL 2.0 as of email conversation from
2013-03-20.
Signed-off-by: Rainer Gerhards <rgerhards@adiscon.com>
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | grammar/rainerscript.c | 6 |
2 files changed, 8 insertions, 1 deletions
@@ -10,6 +10,9 @@ Version 7.2.7 [v7-stable] 2013-03-?? - improved debugging support in forked (auto-backgrounding) mode The rsyslog debug log file is now continued to be written across the fork. +- bugfix: RainerScript getenv() function caused segfault when var was + not found. + Thanks to Philippe Muller for the patch. - bugfix: several issues in imkmsg see bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=421#c8 - bugfix: imuxsock was missing SysSock.ParseTrusted module parameter diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index 20b86c5c..b04e53b5 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -1071,8 +1071,12 @@ doFuncCall(struct cnffunc *func, struct var *ret, void* usrptr) estr = var2String(&r[0], &bMustFree); str = (char*) es_str2cstr(estr, NULL); envvar = getenv(str); + if(envvar == NULL) { + ret->d.estr = es_newStr(0); + } else { + ret->d.estr = es_newStrFromCStr(envvar, strlen(envvar)); + } ret->datatype = 'S'; - ret->d.estr = es_newStrFromCStr(envvar, strlen(envvar)); if(bMustFree) es_deleteStr(estr); if(r[0].datatype == 'S') es_deleteStr(r[0].d.estr); free(str); |