]> git.ipfire.org Git - thirdparty/iw.git/blobdiff - nan.c
iw: scan: parse 'supported Operating Classes element'
[thirdparty/iw.git] / nan.c
diff --git a/nan.c b/nan.c
old mode 100755 (executable)
new mode 100644 (file)
index e557ac0..1d8d795
--- a/nan.c
+++ b/nan.c
@@ -190,7 +190,7 @@ static int parse_srf(char **argv, int argc, struct nl_msg *func_attrs)
        struct nl_msg *srf_attrs;
        int old_argc = argc;
        unsigned char mac_addr[ETH_ALEN];
-       char *cur_mac, *sptr;
+       char *cur_mac, *sptr = NULL;
 
        srf_attrs = nlmsg_alloc();
        if (strcmp(argv[0], "include") == 0)
@@ -204,6 +204,7 @@ static int parse_srf(char **argv, int argc, struct nl_msg *func_attrs)
                unsigned char *srf;
                size_t srf_len;
                __u8 bf_idx;
+               int err;
 
                argc--;
                argv++;
@@ -231,6 +232,7 @@ static int parse_srf(char **argv, int argc, struct nl_msg *func_attrs)
                while (cur_mac) {
                        if (mac_addr_a2n(mac_addr, cur_mac)) {
                                printf("mac format error %s\n", cur_mac);
+                               free(srf);
                                return -EINVAL;
                        }
 
@@ -238,7 +240,10 @@ static int parse_srf(char **argv, int argc, struct nl_msg *func_attrs)
                        cur_mac = strtok_r(NULL, ";", &sptr);
                }
 
-               NLA_PUT(srf_attrs, NL80211_NAN_SRF_BF, srf_len, srf);
+               err = nla_put(srf_attrs, NL80211_NAN_SRF_BF, srf_len, srf);
+               free(srf);
+               if (err)
+                       goto nla_put_failure;
                argv++;
                argc--;
        } else if  (strcmp(argv[0], "list") == 0) {
@@ -273,7 +278,7 @@ nla_put_failure:
 static void parse_match_filter(char *filter, struct nl_msg *func_attrs, int tx)
 {
        struct nlattr *nl_filt;
-       char *cur_filt, *sptr;
+       char *cur_filt, *sptr = NULL;
        int i = 0;
 
        if (tx)