diff --git a/mbuni/mmsc/mms_detokenize_shell.c b/mbuni/mmsc/mms_detokenize_shell.c index 89f93ae..e1af8db 100644 --- a/mbuni/mmsc/mms_detokenize_shell.c +++ b/mbuni/mmsc/mms_detokenize_shell.c @@ -35,16 +35,28 @@ static int mms_detokenizer_fini(void) return 0; } -static Octstr *mms_detokenize(Octstr * token, Octstr *request_ip) +static Octstr *mms_detokenize(Octstr *token, Octstr *request_ip) { Octstr *cmd = NULL, *msisdn = NULL; + Octstr *tmp1, *tmp2; FILE *fp; char buf[4096]; if (script == NULL || octstr_len(script) == 0) return NULL; - cmd = octstr_format("%s '%s'", octstr_get_cstr(script), octstr_get_cstr(token)); + tmp1 = octstr_duplicate(token ? token : octstr_imm("")); + tmp2 = octstr_duplicate(request_ip ? request_ip : octstr_imm("")); + + escape_shell_chars(tmp1); + escape_shell_chars(tmp2); + + cmd = octstr_format("%s %s %s", + octstr_get_cstr(script), + octstr_get_cstr(tmp1), + octstr_get_cstr(tmp2)); + octstr_destroy(tmp1); + octstr_destroy(tmp2); info(0, "Calling \"%s\"", octstr_get_cstr(cmd)); if ((fp = popen(octstr_get_cstr(cmd), "r"))) { if (fgets(buf, sizeof buf, fp) != NULL) {