diff --git a/src/core/cfg.lex b/src/core/cfg.lex index b8e4f9aa700..d36fc72b544 100644 --- a/src/core/cfg.lex +++ b/src/core/cfg.lex @@ -1927,11 +1927,16 @@ ksr_ppdefine_t* pp_get_define(int idx) return &pp_defines[idx]; } -static int pp_lookup(int len, const char * text) +static int pp_lookup(int len, const char *text) { str var = {(char *)text, len}; int i; + if(len<=0 || text==NULL) { + LM_ERR("invalid parameters"); + return -1; + } + for (i=0; i 0 * ifndef undefined -> 1 */ -static void pp_ifdef_var(int len, const char * text) +static void pp_ifdef_var(int len, const char *text) { pp_ifdef_stack[pp_sptr] ^= (pp_lookup(len, text) < 0); } diff --git a/src/main.c b/src/main.c index ee558db13f4..6d363ba3751 100644 --- a/src/main.c +++ b/src/main.c @@ -2202,16 +2202,17 @@ int main(int argc, char** argv) case 'A': p = strchr(optarg, '='); if(p) { - *p = '\0'; + tmp_len = p - optarg; + } else { + tmp_len = strlen(optarg); } pp_define_set_type(0); - if(pp_define(strlen(optarg), optarg)<0) { + if(pp_define(tmp_len, optarg)<0) { fprintf(stderr, "error at define param: -A %s\n", optarg); goto error; } if(p) { - *p = '='; p++; if(pp_define_set(strlen(p), p)<0) { fprintf(stderr, "error at define value: -A %s\n",