]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Free dictionaries if we can't resolve the attributes
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 30 Oct 2018 19:38:34 +0000 (15:38 -0400)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 10 Dec 2018 16:20:34 +0000 (11:20 -0500)
src/lib/soh/soh.c
src/modules/rlm_eap/lib/sim/base.c
src/protocols/dhcpv4/base.c
src/protocols/dhcpv6/base.c
src/protocols/radius/base.c
src/protocols/vqp/base.c

index 9d11b4744cafec572fa185f8d08d492898097a05..78e27643601a6b77aa158c5843e6c87e6cbadf4c 100644 (file)
@@ -722,17 +722,14 @@ int fr_soh_init(void)
                return 0;
        }
 
-       if (fr_dict_autoload(soh_dict) < 0) {
-               PERROR("Failed initialising protocol library");
-               return -1;
-       }
+       if (fr_dict_autoload(soh_dict) < 0) return -1;
 
        if (fr_dict_attr_autoload(soh_dict_attr) < 0) {
-               PERROR("Failed resolving attributes");
+               fr_dict_autofree(soh_dict);
                return -1;
        }
 
-
+       instance_count++;
 
        return 0;
 }
index e38e81e91428534479c2414fd12b82e9c987dd9f..eaa569f478df3653532a4aaa3434d652802c0327 100644 (file)
@@ -185,7 +185,11 @@ int fr_sim_init(void)
        }
 
        if (fr_dict_autoload(libfreeradius_sim_dict) < 0) return -1;
-       if (fr_dict_attr_autoload(libfreeradius_sim_dict_attr) < 0) return -1;
+       if (fr_dict_attr_autoload(libfreeradius_sim_dict_attr) < 0) {
+               fr_dict_autofree(libfreeradius_sim_dict);
+               return -1;
+       }
+       instance_count++;
 
        return 0;
 }
index 7b830f0e31a2a8debef171d6284eea4167252f38..14b534ff421fefe26a23d928829a9bebeec3b3ff 100644 (file)
@@ -501,7 +501,10 @@ int fr_dhcpv4_global_init(void)
        }
 
        if (fr_dict_autoload(dhcpv4_dict) < 0) return -1;
-       if (fr_dict_attr_autoload(dhcpv4_dict_attr) < 0) return -1;
+       if (fr_dict_attr_autoload(dhcpv4_dict_attr) < 0) {
+               fr_dict_autofree(dhcpv4_dict);
+               return -1;
+       }
 
        /*
         *      Fixup dictionary entry for DHCP-Paramter-Request-List adding all the options
index 262cfc1f31ff060ad71ee63696a8d13e6d55fd51..aefbd456a9f1954d0c80faca828e10d3cecd2bb8 100644 (file)
@@ -99,6 +99,8 @@ int fr_dhcpv6_global_init(void)
 
        if (fr_dict_autoload(dhcpv6_dict) < 0) return -1;
 
+       instance_count++;
+
        return 0;
 }
 
index 92cb582ec5dd1eeb880740836a4c6306483fd521..89d5e90f5dda8e9080558665c3a17e30344c1ea1 100644 (file)
@@ -1074,7 +1074,6 @@ ssize_t   fr_radius_decode(TALLOC_CTX *ctx, uint8_t *packet, size_t packet_len, ui
        return packet_len;
 }
 
-
 static void print_hex_data(uint8_t const *ptr, int attrlen, int depth)
 {
        int i;
@@ -1097,7 +1096,12 @@ int fr_radius_init(void)
        }
 
        if (fr_dict_autoload(libfreeradius_radius_dict) < 0) return -1;
-       if (fr_dict_attr_autoload(libfreeradius_radius_dict_attr) < 0) return -1;
+       if (fr_dict_attr_autoload(libfreeradius_radius_dict_attr) < 0) {
+               fr_dict_autofree(libfreeradius_radius_dict);
+               return -1;
+       }
+
+       instance_count++;
 
        return 0;
 }
index 9e56e80cbc038edfe2edf856157e18aadc0003c5..095479425d79d3d0946bf593c53f4166ed59a06b 100644 (file)
@@ -59,7 +59,10 @@ int fr_vqp_init(void)
        }
 
        if (fr_dict_autoload(libfreeradius_vqp) < 0) return -1;
-       if (fr_dict_attr_autoload(libfreeradius_vqp_attr) < 0) return -1;
+       if (fr_dict_attr_autoload(libfreeradius_vqp_attr) < 0) {
+               fr_dict_autofree(libfreeradius_vqp);
+               return -1;
+       }
 
        instance_count++;