*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);
         * 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;
        }
 
 {
        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);
 
                if (!p)
                        continue;
 
-               if (!uci_validate_name(p))
+               if (!uci_validate_package(p))
                        continue;
 
                configs[i] = buf;
 
 
        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 
        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) {
 
        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);
                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;