diff --git a/main/manager.c b/main/manager.c
index a6f1b2bac88fcee82c2805be94d8ad45c4e29791..5d8e25b95689c489b7e57025107a2fea565263d5 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++;