diff options
author | Daniel Stenberg <daniel@haxx.se> | 2013-02-13 13:18:43 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2013-02-14 10:41:45 +0100 |
commit | 358c5c0745a4c47f910189095f3832163b4708c4 (patch) | |
tree | 7e605f952fc16496ce4a0b5583c258466948d8e2 /lib/if2ip.c | |
parent | d821525cee3fb43f746fdebf6dcc2dd8daa2bb7f (diff) | |
download | curl-358c5c0745a4c47f910189095f3832163b4708c4.tar.gz |
strlcat: remove function
This function was only used twice, both in places where performance
isn't crucial (socks + if2ip). Removing the use of this function removes
the need to have our private version for systems without it == reduced
amount of code.
Also, in the SOCKS case it is clearly better to fail gracefully rather
than to truncate the results.
This work was triggered by a bug report on the strcal prototype in
strequal.h.
strlcat was added in commit db70cd28 in February 2001!
Bug: http://curl.haxx.se/bug/view.cgi?id=1192
Reported by: Jeremy Huddleston
Diffstat (limited to 'lib/if2ip.c')
-rw-r--r-- | lib/if2ip.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/if2ip.c b/lib/if2ip.c index 558e30f15..cc191201e 100644 --- a/lib/if2ip.c +++ b/lib/if2ip.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -95,6 +95,7 @@ char *Curl_if2ip(int af, const char *interf, char *buf, int buf_size) curl_strequal(iface->ifa_name, interf)) { void *addr; char scope[12]=""; + char ipstr[64]; #ifdef ENABLE_IPV6 if(af == AF_INET6) { unsigned int scopeid = 0; @@ -109,8 +110,9 @@ char *Curl_if2ip(int af, const char *interf, char *buf, int buf_size) else #endif addr = &((struct sockaddr_in *)iface->ifa_addr)->sin_addr; - ip = (char *) Curl_inet_ntop(af, addr, buf, buf_size); - strlcat(buf, scope, buf_size); + ip = (char *) Curl_inet_ntop(af, addr, ipstr, sizeof(ipstr)); + snprintf(buf, buf_size, "%s%s", ip, scope); + ip = buf; break; } } |