]> pilppa.com Git - uci.git/commitdiff
overhaul package and section type validation - makes it easier to read and fixes...
authorFelix Fietkau <nbd@openwrt.org>
Fri, 5 Sep 2008 19:51:46 +0000 (21:51 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 5 Sep 2008 19:51:46 +0000 (21:51 +0200)
file.c
list.c
util.c

diff --git a/file.c b/file.c
index a58ac559e55aedda25730ea2a0d4a86f978d5e53..06ba34df95dc4379e0d23974cc5f6222fd6c5701 100644 (file)
--- a/file.c
+++ b/file.c
@@ -119,7 +119,7 @@ static void uci_parse_config(struct uci_context *ctx, char **str)
        *str += strlen(*str) + 1;
 
        type = next_arg(ctx, str, true, false);
-       if (!uci_validate_str(type, false))
+       if (!uci_validate_type(type))
                uci_parse_error(ctx, type, "invalid character in field");
        name = next_arg(ctx, str, false, true);
        assert_eol(ctx, str);
@@ -353,7 +353,7 @@ int uci_import(struct uci_context *ctx, FILE *stream, const char *name, struct u
         * NB: the config file can still override the package name
         */
        if (name) {
-               UCI_ASSERT(ctx, uci_validate_str(name, false));
+               UCI_ASSERT(ctx, uci_validate_package(name));
                pctx->name = name;
        }
 
@@ -394,7 +394,7 @@ static char *uci_config_path(struct uci_context *ctx, const char *name)
 {
        char *filename;
 
-       UCI_ASSERT(ctx, uci_validate_str(name, false));
+       UCI_ASSERT(ctx, uci_validate_package(name));
        filename = uci_malloc(ctx, strlen(name) + strlen(ctx->confdir) + 2);
        sprintf(filename, "%s/%s", ctx->confdir, name);
 
@@ -520,7 +520,7 @@ static char **uci_list_config_files(struct uci_context *ctx)
                if (!p)
                        continue;
 
-               if (!uci_validate_name(p))
+               if (!uci_validate_package(p))
                        continue;
 
                configs[i] = buf;
diff --git a/list.c b/list.c
index fe2e6ec225940b488b9bdbae771499f953ee7bb4..b4f4da8faf0b6194e490be9f8bb4b2e74171dcd7 100644 (file)
--- a/list.c
+++ b/list.c
@@ -322,7 +322,7 @@ uci_lookup_ext_section(struct uci_context *ctx, struct uci_ptr *ptr)
 
        if (!*name)
                name = NULL;
-       else if (!uci_validate_str(name, false))
+       else if (!uci_validate_type(name))
                goto error;
 
        /* if the given index is negative, it specifies the section number from 
@@ -618,7 +618,7 @@ int uci_set(struct uci_context *ctx, struct uci_ptr *ptr)
        UCI_ASSERT(ctx, ptr->value);
        UCI_ASSERT(ctx, ptr->s || (!ptr->option && ptr->section));
        if (!ptr->option) {
-               UCI_ASSERT(ctx, uci_validate_str(ptr->value, false));
+               UCI_ASSERT(ctx, uci_validate_type(ptr->value));
        }
 
        if (!ptr->o && ptr->s && ptr->option) {
diff --git a/util.c b/util.c
index 177bd1408d3fa24ce4a33b38917644b9e6bfa632..e56992e71b8b0f73aef6247b9f458462933e1a42 100644 (file)
--- a/util.c
+++ b/util.c
@@ -96,6 +96,16 @@ __plugin bool uci_validate_str(const char *str, bool name)
        return true;
 }
 
+static inline bool uci_validate_package(const char *str)
+{
+       return uci_validate_str(str, false);
+}
+
+static inline bool uci_validate_type(const char *str)
+{
+       return uci_validate_str(str, false);
+}
+
 static inline bool uci_validate_name(const char *str)
 {
        return uci_validate_str(str, true);
@@ -159,7 +169,7 @@ int uci_parse_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *str)
                goto error;
 
 lastval:
-       if (ptr->package && !uci_validate_str(ptr->package, false))
+       if (ptr->package && !uci_validate_package(ptr->package))
                goto error;
        if (ptr->section && !uci_validate_name(ptr->section))
                ptr->flags |= UCI_LOOKUP_EXTENDED;