]> jfr.im git - irc/irssi/irssi.git/commitdiff
Enforce the is_node_list contract in lib-config setters.
authorLemonBoy <redacted>
Tue, 29 Nov 2016 22:08:45 +0000 (23:08 +0100)
committerLemonBoy <redacted>
Tue, 29 Nov 2016 22:08:45 +0000 (23:08 +0100)
An assertion failure is better than a segfault.

src/lib-config/set.c

index 7ca558714fee903bd0691d789ab6b48be2baf066..0de6c50342b5d929e78a79dd750cda3ef5090b15 100644 (file)
@@ -82,6 +82,7 @@ void config_node_clear(CONFIG_REC *rec, CONFIG_NODE *node)
 void config_nodes_remove_all(CONFIG_REC *rec)
 {
        g_return_if_fail(rec != NULL);
+       g_return_if_fail(is_node_list(rec->mainnode));
 
        while (rec->mainnode->value != NULL)
                config_node_remove(rec, rec->mainnode, ((GSList *) rec->mainnode->value)->data);
@@ -94,6 +95,7 @@ void config_node_set_str(CONFIG_REC *rec, CONFIG_NODE *parent, const char *key,
 
        g_return_if_fail(rec != NULL);
        g_return_if_fail(parent != NULL);
+       g_return_if_fail(is_node_list(parent));
 
        no_key = key == NULL;
        node = no_key ? NULL : config_node_find(parent, key);