Browse Source

cli: fix uci show output for anonymous sections (#21781)

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Felix Fietkau 8 years ago
parent
commit
d4e42a9081
1 changed files with 16 additions and 9 deletions
  1. 16 9
      cli.c

+ 16 - 9
cli.c

@@ -87,9 +87,10 @@ static char *
 uci_lookup_section_ref(struct uci_section *s)
 {
 	struct uci_type_list *ti = type_list;
+	char *ret;
 	int maxlen;
 
-	if (!s->anonymous || !(flags & CLI_FLAG_SHOW_EXT))
+	if (!(flags & CLI_FLAG_SHOW_EXT))
 		return s->e.name;
 
 	/* look up in section type list */
@@ -108,19 +109,25 @@ uci_lookup_section_ref(struct uci_section *s)
 		ti->name = s->type;
 	}
 
-	maxlen = strlen(s->type) + 1 + 2 + 10;
-	if (!typestr) {
-		typestr = malloc(maxlen);
+	if (s->anonymous) {
+		maxlen = strlen(s->type) + 1 + 2 + 10;
+		if (!typestr) {
+			typestr = malloc(maxlen);
+		} else {
+			typestr = realloc(typestr, maxlen);
+		}
+
+		if (typestr)
+			sprintf(typestr, "@%s[%d]", ti->name, ti->idx);
+
+		ret = typestr;
 	} else {
-		typestr = realloc(typestr, maxlen);
+		ret = s->e.name;
 	}
 
-	if (typestr)
-		sprintf(typestr, "@%s[%d]", ti->name, ti->idx);
-
 	ti->idx++;
 
-	return typestr;
+	return ret;
 }
 
 static void uci_usage(void)