summaryrefslogtreecommitdiff
path: root/main/manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/manager.c')
-rw-r--r--main/manager.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/main/manager.c b/main/manager.c
index a6f1b2bac..5d8e25b95 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -1270,7 +1270,7 @@ static enum error_type handle_updates(struct mansession *s, const struct message
{
int x;
char hdr[40];
- const char *action, *cat, *match, *line;
+ const char *action, *cat, *match, *line, *tmp;
char *var, *value;
struct ast_category *category;
struct ast_variable *v;
@@ -1285,11 +1285,19 @@ static enum error_type handle_updates(struct mansession *s, const struct message
snprintf(hdr, sizeof(hdr), "Cat-%06d", x);
cat = astman_get_header(m, hdr);
snprintf(hdr, sizeof(hdr), "Var-%06d", x);
- var = astman_get_header(m, hdr);
- ast_uri_decode(var);
+ if ((tmp = astman_get_header(m, hdr))) {
+ var = ast_strdupa(tmp);
+ ast_uri_decode(var);
+ } else {
+ var = "";
+ }
snprintf(hdr, sizeof(hdr), "Value-%06d", x);
- value = astman_get_header(m, hdr);
- ast_uri_decode(value);
+ if ((tmp = astman_get_header(m, hdr))) {
+ value = ast_strdupa(tmp);
+ ast_uri_decode(value);
+ } else {
+ value = "";
+ }
if (!ast_strlen_zero(value) && *value == '>') {
object = 1;
value++;