diff options
Diffstat (limited to 'networking/interface.c')
-rw-r--r-- | networking/interface.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/networking/interface.c b/networking/interface.c index b0572d04e..24bd13c57 100644 --- a/networking/interface.c +++ b/networking/interface.c | |||
@@ -89,13 +89,9 @@ struct in6_ifreq { | |||
89 | /* Display an Internet socket address. */ | 89 | /* Display an Internet socket address. */ |
90 | static const char* FAST_FUNC INET_sprint(struct sockaddr *sap, int numeric) | 90 | static const char* FAST_FUNC INET_sprint(struct sockaddr *sap, int numeric) |
91 | { | 91 | { |
92 | static char *buff; /* defaults to NULL */ | ||
93 | |||
94 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) | 92 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) |
95 | return "[NONE SET]"; | 93 | return "[NONE SET]"; |
96 | free(buff); | 94 | return auto_string(INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00)); |
97 | buff = INET_rresolve((struct sockaddr_in *) sap, numeric, 0xffffff00); | ||
98 | return buff; | ||
99 | } | 95 | } |
100 | 96 | ||
101 | #ifdef UNUSED_AND_BUGGY | 97 | #ifdef UNUSED_AND_BUGGY |
@@ -171,13 +167,9 @@ static const struct aftype inet_aftype = { | |||
171 | /* dirty! struct sockaddr usually doesn't suffer for inet6 addresses, fst. */ | 167 | /* dirty! struct sockaddr usually doesn't suffer for inet6 addresses, fst. */ |
172 | static const char* FAST_FUNC INET6_sprint(struct sockaddr *sap, int numeric) | 168 | static const char* FAST_FUNC INET6_sprint(struct sockaddr *sap, int numeric) |
173 | { | 169 | { |
174 | static char *buff; | ||
175 | |||
176 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) | 170 | if (sap->sa_family == 0xFFFF || sap->sa_family == 0) |
177 | return "[NONE SET]"; | 171 | return "[NONE SET]"; |
178 | free(buff); | 172 | return auto_string(INET6_rresolve((struct sockaddr_in6 *) sap, numeric)); |
179 | buff = INET6_rresolve((struct sockaddr_in6 *) sap, numeric); | ||
180 | return buff; | ||
181 | } | 173 | } |
182 | 174 | ||
183 | #ifdef UNUSED | 175 | #ifdef UNUSED |
@@ -223,13 +215,11 @@ static const struct aftype inet6_aftype = { | |||
223 | /* Display an UNSPEC address. */ | 215 | /* Display an UNSPEC address. */ |
224 | static char* FAST_FUNC UNSPEC_print(unsigned char *ptr) | 216 | static char* FAST_FUNC UNSPEC_print(unsigned char *ptr) |
225 | { | 217 | { |
226 | static char *buff; | 218 | char *buff; |
227 | |||
228 | char *pos; | 219 | char *pos; |
229 | unsigned int i; | 220 | unsigned int i; |
230 | 221 | ||
231 | if (!buff) | 222 | buff = auto_string(xmalloc(sizeof(struct sockaddr) * 3 + 1)); |
232 | buff = xmalloc(sizeof(struct sockaddr) * 3 + 1); | ||
233 | pos = buff; | 223 | pos = buff; |
234 | for (i = 0; i < sizeof(struct sockaddr); i++) { | 224 | for (i = 0; i < sizeof(struct sockaddr); i++) { |
235 | /* careful -- not every libc's sprintf returns # bytes written */ | 225 | /* careful -- not every libc's sprintf returns # bytes written */ |
@@ -712,14 +702,12 @@ static const struct hwtype loop_hwtype = { | |||
712 | /* Display an Ethernet address in readable format. */ | 702 | /* Display an Ethernet address in readable format. */ |
713 | static char* FAST_FUNC ether_print(unsigned char *ptr) | 703 | static char* FAST_FUNC ether_print(unsigned char *ptr) |
714 | { | 704 | { |
715 | static char *buff; | 705 | char *buff; |
716 | |||
717 | free(buff); | ||
718 | buff = xasprintf("%02X:%02X:%02X:%02X:%02X:%02X", | 706 | buff = xasprintf("%02X:%02X:%02X:%02X:%02X:%02X", |
719 | (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377), | 707 | (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377), |
720 | (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377) | 708 | (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377) |
721 | ); | 709 | ); |
722 | return buff; | 710 | return auto_string(buff); |
723 | } | 711 | } |
724 | 712 | ||
725 | static const struct hwtype ether_hwtype = { | 713 | static const struct hwtype ether_hwtype = { |