uci: fix a potential use-after-free in uci_set()
[project/uci.git] / uci.h
diff --git a/uci.h b/uci.h
index 6a72b6a..43f2052 100644 (file)
--- a/uci.h
+++ b/uci.h
@@ -435,7 +435,6 @@ struct uci_package
        struct uci_backend *backend;
        void *priv;
        int n_section;
-       int name_index;
        struct uci_list delta;
        struct uci_list saved_delta;
 };
@@ -690,6 +689,15 @@ uci_lookup_option_string(struct uci_context *ctx, struct uci_section *s, const c
        return o->v.string;
 }
 
+#ifndef BITS_PER_LONG
+#define BITS_PER_LONG (8 * sizeof(unsigned long))
+#endif
+
+static inline void uci_bitfield_set(unsigned long *bits, int bit)
+{
+       bits[bit / BITS_PER_LONG] |= (1UL << (bit % BITS_PER_LONG));
+}
+
 #ifdef __cplusplus
 }
 #endif