ifconfig: fix double free fatal error in INET_sprint
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 3 Feb 2015 11:11:30 +0000 (12:11 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 3 Feb 2015 11:11:30 +0000 (12:11 +0100)
Based on the patch by Zheng Junling <zhengjunling@huawei.com>
and Chen Gang <cg.chen@huawei.com>

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/interface.c

index bf7d2b1b44ab7b24fcb7c7fded97432081b20104..b0572d04e578a312b2021206a0c7fa83f258cbfe 100644 (file)
@@ -91,9 +91,9 @@ static const char* FAST_FUNC INET_sprint(struct sockaddr *sap, int numeric)
 {
        static char *buff; /* defaults to NULL */
 
-       free(buff);
        if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
                return "[NONE SET]";
+       free(buff);
        buff = INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00);
        return buff;
 }
@@ -173,9 +173,9 @@ static const char* FAST_FUNC INET6_sprint(struct sockaddr *sap, int numeric)
 {
        static char *buff;
 
-       free(buff);
        if (sap->sa_family == 0xFFFF || sap->sa_family == 0)
                return "[NONE SET]";
+       free(buff);
        buff = INET6_rresolve((struct sockaddr_in6 *) sap, numeric);
        return buff;
 }