projects
/
project
/
uci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
uci_delete: check ptr->o and its type before checking ptr->value
[project/uci.git]
/
cli.c
diff --git
a/cli.c
b/cli.c
index
f5dfce0
..
a5b77a8
100644
(file)
--- a/
cli.c
+++ b/
cli.c
@@
-27,7
+27,6
@@
static enum {
CLI_FLAG_NOCOMMIT = (1 << 2),
CLI_FLAG_BATCH = (1 << 3),
CLI_FLAG_SHOW_EXT = (1 << 4),
CLI_FLAG_NOCOMMIT = (1 << 2),
CLI_FLAG_BATCH = (1 << 3),
CLI_FLAG_SHOW_EXT = (1 << 4),
- CLI_FLAG_NOPLUGINS= (1 << 5),
} flags;
static FILE *input;
} flags;
static FILE *input;
@@
-138,7
+137,7
@@
static void uci_usage(void)
"\tshow [<config>[.<section>[.<option>]]]\n"
"\tget <config>.<section>[.<option>]\n"
"\tset <config>.<section>[.<option>]=<value>\n"
"\tshow [<config>[.<section>[.<option>]]]\n"
"\tget <config>.<section>[.<option>]\n"
"\tset <config>.<section>[.<option>]=<value>\n"
- "\tdelete <config>[.<section
[.<option>
]]\n"
+ "\tdelete <config>[.<section
>[[.<option>][=<id>]
]]\n"
"\trename <config>.<section>[.<option>]=<name>\n"
"\trevert <config>[.<section>[.<option>]]\n"
"\treorder <config>.<section>=<position>\n"
"\trename <config>.<section>[.<option>]=<name>\n"
"\trevert <config>[.<section>[.<option>]]\n"
"\treorder <config>.<section>=<position>\n"
@@
-147,7
+146,6
@@
static void uci_usage(void)
"\t-c <path> set the search path for config files (default: /etc/config)\n"
"\t-d <str> set the delimiter for list values in uci show\n"
"\t-f <file> use <file> as input instead of stdin\n"
"\t-c <path> set the search path for config files (default: /etc/config)\n"
"\t-d <str> set the delimiter for list values in uci show\n"
"\t-f <file> use <file> as input instead of stdin\n"
- "\t-L do not load any plugins\n"
"\t-m when importing, merge data into an existing package\n"
"\t-n name unnamed sections on export (default)\n"
"\t-N don't name unnamed sections\n"
"\t-m when importing, merge data into an existing package\n"
"\t-n name unnamed sections on export (default)\n"
"\t-N don't name unnamed sections\n"
@@
-414,6
+412,7
@@
static int uci_do_section_cmd(int cmd, int argc, char **argv)
struct uci_element *e;
struct uci_ptr ptr;
int ret = UCI_OK;
struct uci_element *e;
struct uci_ptr ptr;
int ret = UCI_OK;
+ int dummy;
if (argc != 2)
return 255;
if (argc != 2)
return 255;
@@
-423,7
+422,7
@@
static int uci_do_section_cmd(int cmd, int argc, char **argv)
return 1;
}
return 1;
}
- if (ptr.value && (cmd != CMD_SET) &&
+ if (ptr.value && (cmd != CMD_SET) &&
(cmd != CMD_DEL) &&
(cmd != CMD_ADD_LIST) && (cmd != CMD_DEL_LIST) &&
(cmd != CMD_RENAME) && (cmd != CMD_REORDER))
return 1;
(cmd != CMD_ADD_LIST) && (cmd != CMD_DEL_LIST) &&
(cmd != CMD_RENAME) && (cmd != CMD_REORDER))
return 1;
@@
-472,6
+471,8
@@
static int uci_do_section_cmd(int cmd, int argc, char **argv)
ret = uci_reorder_section(ctx, ptr.s, strtoul(ptr.value, NULL, 10));
break;
case CMD_DEL:
ret = uci_reorder_section(ctx, ptr.s, strtoul(ptr.value, NULL, 10));
break;
case CMD_DEL:
+ if (ptr.value && !sscanf(ptr.value, "%d", &dummy))
+ return 1;
ret = uci_delete(ctx, &ptr);
break;
}
ret = uci_delete(ctx, &ptr);
break;
}
@@
-661,9
+662,6
@@
int main(int argc, char **argv)
return 1;
}
break;
return 1;
}
break;
- case 'L':
- flags |= CLI_FLAG_NOPLUGINS;
- break;
case 'm':
flags |= CLI_FLAG_MERGE;
break;
case 'm':
flags |= CLI_FLAG_MERGE;
break;
@@
-709,9
+707,6
@@
int main(int argc, char **argv)
return 0;
}
return 0;
}
- if (!(flags & CLI_FLAG_NOPLUGINS))
- uci_load_plugins(ctx, NULL);
-
ret = uci_cmd(argc - 1, argv + 1);
if (input != stdin)
fclose(input);
ret = uci_cmd(argc - 1, argv + 1);
if (input != stdin)
fclose(input);