summaryrefslogtreecommitdiffstats
path: root/grammar/rainerscript.c
diff options
context:
space:
mode:
authorPhilippe Muller <philippe.muller@gmail.com>2013-03-20 09:27:04 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2013-03-20 09:27:34 +0100
commit619c70d31f33deb8538636ac1302a2d4032a844e (patch)
tree8b9d21c93f63cd608c9dc90daa475861a93ad600 /grammar/rainerscript.c
parent83c1920d7a6e675f1f433b047e8ed4e50e1050af (diff)
downloadrsyslog-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>
Diffstat (limited to 'grammar/rainerscript.c')
-rw-r--r--grammar/rainerscript.c6
1 files changed, 5 insertions, 1 deletions
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);