| diff -aruN curl-7.25.0/configure.ac curl-7.25.0.N/configure.ac |
| --- curl-7.25.0/configure.ac 2012-03-08 11:35:23.000000000 -0800 |
| +++ curl-7.25.0.N/configure.ac 2014-10-05 15:25:05.000000000 -0700 |
| @@ -2776,7 +2776,6 @@ |
| CURL_CHECK_FUNC_STRDUP |
| CURL_CHECK_FUNC_STRERROR_R |
| CURL_CHECK_FUNC_STRICMP |
| -CURL_CHECK_FUNC_STRLCAT |
| CURL_CHECK_FUNC_STRNCASECMP |
| CURL_CHECK_FUNC_STRNCMPI |
| CURL_CHECK_FUNC_STRNICMP |
| diff -aruN curl-7.25.0/lib/config-dos.h curl-7.25.0.N/lib/config-dos.h |
| --- curl-7.25.0/lib/config-dos.h 2012-03-08 11:35:24.000000000 -0800 |
| +++ curl-7.25.0.N/lib/config-dos.h 2014-10-05 15:25:05.000000000 -0700 |
| @@ -164,10 +164,6 @@ |
| #define HAVE_SYS_TIME_H 1 |
| #define HAVE_VARIADIC_MACROS_GCC 1 |
| |
| - #if (DJGPP_MINOR >= 4) |
| - #define HAVE_STRLCAT 1 |
| - #endif |
| - |
| /* Because djgpp <= 2.03 doesn't have snprintf() etc. */ |
| #if (DJGPP_MINOR < 4) |
| #define _MPRINTF_REPLACE |
| diff -aruN curl-7.25.0/lib/config-os400.h curl-7.25.0.N/lib/config-os400.h |
| --- curl-7.25.0/lib/config-os400.h 2012-03-08 11:35:24.000000000 -0800 |
| +++ curl-7.25.0.N/lib/config-os400.h 2014-10-05 15:25:05.000000000 -0700 |
| @@ -295,9 +295,6 @@ |
| /* Define if you have the <string.h> header file. */ |
| #define HAVE_STRING_H |
| |
| -/* Define if you have the `strlcat' function. */ |
| -#undef HAVE_STRLCAT |
| - |
| /* Define if you have the `strlcpy' function. */ |
| #undef HAVE_STRLCPY |
| |
| diff -aruN curl-7.25.0/lib/config-riscos.h curl-7.25.0.N/lib/config-riscos.h |
| --- curl-7.25.0/lib/config-riscos.h 2012-03-08 11:35:24.000000000 -0800 |
| +++ curl-7.25.0.N/lib/config-riscos.h 2014-10-05 15:25:05.000000000 -0700 |
| @@ -293,9 +293,6 @@ |
| /* Define if you have the <string.h> header file. */ |
| #define HAVE_STRING_H |
| |
| -/* Define if you have the `strlcat' function. */ |
| -#undef HAVE_STRLCAT |
| - |
| /* Define if you have the `strlcpy' function. */ |
| #undef HAVE_STRLCPY |
| |
| diff -aruN curl-7.25.0/lib/config-symbian.h curl-7.25.0.N/lib/config-symbian.h |
| --- curl-7.25.0/lib/config-symbian.h 2011-11-04 15:32:55.000000000 -0700 |
| +++ curl-7.25.0.N/lib/config-symbian.h 2014-10-05 15:25:05.000000000 -0700 |
| @@ -532,9 +532,6 @@ |
| /* Define to 1 if you have the <string.h> header file. */ |
| #define HAVE_STRING_H 1 |
| |
| -/* Define to 1 if you have the `strlcat' function. */ |
| -#define HAVE_STRLCAT 1 |
| - |
| /* Define to 1 if you have the `strlcpy' function. */ |
| #define HAVE_STRLCPY 1 |
| |
| diff -aruN curl-7.25.0/lib/config-tpf.h curl-7.25.0.N/lib/config-tpf.h |
| --- curl-7.25.0/lib/config-tpf.h 2011-11-04 15:32:55.000000000 -0700 |
| +++ curl-7.25.0.N/lib/config-tpf.h 2014-10-05 15:25:05.000000000 -0700 |
| @@ -477,9 +477,6 @@ |
| /* Define to 1 if you have the <string.h> header file. */ |
| #define HAVE_STRING_H 1 |
| |
| -/* Define to 1 if you have the `strlcat' function. */ |
| -/* #undef HAVE_STRLCAT */ |
| - |
| /* Define to 1 if you have the `strlcpy' function. */ |
| /* #undef HAVE_STRLCPY */ |
| |
| diff -aruN curl-7.25.0/lib/config-vxworks.h curl-7.25.0.N/lib/config-vxworks.h |
| --- curl-7.25.0/lib/config-vxworks.h 2011-11-04 15:32:55.000000000 -0700 |
| +++ curl-7.25.0.N/lib/config-vxworks.h 2014-10-05 15:25:05.000000000 -0700 |
| @@ -604,9 +604,6 @@ |
| /* Define to 1 if you have the <string.h> header file. */ |
| #define HAVE_STRING_H 1 |
| |
| -/* Define to 1 if you have the strlcat function. */ |
| -/* #undef HAVE_STRLCAT */ |
| - |
| /* Define to 1 if you have the `strlcpy' function. */ |
| /* #undef HAVE_STRLCPY */ |
| |
| diff -aruN curl-7.25.0/lib/if2ip.c curl-7.25.0.N/lib/if2ip.c |
| --- curl-7.25.0/lib/if2ip.c 2012-03-08 11:35:24.000000000 -0800 |
| +++ curl-7.25.0.N/lib/if2ip.c 2014-10-05 15:25:05.000000000 -0700 |
| @@ -101,6 +101,7 @@ |
| 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; |
| @@ -115,8 +116,9 @@ |
| 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; |
| } |
| } |
| diff -aruN curl-7.25.0/lib/socks.c curl-7.25.0.N/lib/socks.c |
| --- curl-7.25.0/lib/socks.c 2012-03-08 11:35:25.000000000 -0800 |
| +++ curl-7.25.0.N/lib/socks.c 2014-10-05 15:25:05.000000000 -0700 |
| @@ -199,8 +199,15 @@ |
| * This is currently not supporting "Identification Protocol (RFC1413)". |
| */ |
| socksreq[8] = 0; /* ensure empty userid is NUL-terminated */ |
| - if(proxy_name) |
| - strlcat((char*)socksreq + 8, proxy_name, sizeof(socksreq) - 8); |
| + if(proxy_name) { |
| + size_t plen = strlen(proxy_name); |
| + if(plen >= sizeof(socksreq) - 8) { |
| + failf(data, "Too long SOCKS proxy name, can't use!\n"); |
| + return CURLE_COULDNT_CONNECT; |
| + } |
| + /* copy the proxy name WITH trailing zero */ |
| + memcpy(socksreq + 8, proxy_name, plen+1); |
| + } |
| |
| /* |
| * Make connection |
| diff -aruN curl-7.25.0/lib/strequal.c curl-7.25.0.N/lib/strequal.c |
| --- curl-7.25.0/lib/strequal.c 2012-03-08 11:35:25.000000000 -0800 |
| +++ curl-7.25.0.N/lib/strequal.c 2014-10-05 15:25:05.000000000 -0700 |
| @@ -77,48 +77,3 @@ |
| return toupper(*first) == toupper(*second); |
| #endif |
| } |
| - |
| -#ifndef HAVE_STRLCAT |
| -/* |
| - * The strlcat() function appends the NUL-terminated string src to the end |
| - * of dst. It will append at most size - strlen(dst) - 1 bytes, NUL-termi- |
| - * nating the result. |
| - * |
| - * The strlcpy() and strlcat() functions return the total length of the |
| - * string they tried to create. For strlcpy() that means the length of src. |
| - * For strlcat() that means the initial length of dst plus the length of |
| - * src. While this may seem somewhat confusing it was done to make trunca- |
| - * tion detection simple. |
| - * |
| - * |
| - */ |
| -size_t Curl_strlcat(char *dst, const char *src, size_t siz) |
| -{ |
| - char *d = dst; |
| - const char *s = src; |
| - size_t n = siz; |
| - union { |
| - ssize_t sig; |
| - size_t uns; |
| - } dlen; |
| - |
| - /* Find the end of dst and adjust bytes left but don't go past end */ |
| - while(n-- != 0 && *d != '\0') |
| - d++; |
| - dlen.sig = d - dst; |
| - n = siz - dlen.uns; |
| - |
| - if(n == 0) |
| - return(dlen.uns + strlen(s)); |
| - while(*s != '\0') { |
| - if(n != 1) { |
| - *d++ = *s; |
| - n--; |
| - } |
| - s++; |
| - } |
| - *d = '\0'; |
| - |
| - return(dlen.uns + (s - src)); /* count does not include NUL */ |
| -} |
| -#endif |
| diff -aruN curl-7.25.0/lib/strequal.h curl-7.25.0.N/lib/strequal.h |
| --- curl-7.25.0/lib/strequal.h 2011-03-19 08:16:07.000000000 -0700 |
| +++ curl-7.25.0.N/lib/strequal.h 2014-10-05 15:25:05.000000000 -0700 |
| @@ -27,9 +27,4 @@ |
| #define strequal(a,b) curl_strequal(a,b) |
| #define strnequal(a,b,c) curl_strnequal(a,b,c) |
| |
| -#ifndef HAVE_STRLCAT |
| -#define strlcat(x,y,z) Curl_strlcat(x,y,z) |
| -#endif |
| -size_t strlcat(char *dst, const char *src, size_t siz); |
| - |
| #endif |
| diff -aruN curl-7.25.0/m4/curl-functions.m4 curl-7.25.0.N/m4/curl-functions.m4 |
| --- curl-7.25.0/m4/curl-functions.m4 2012-03-21 16:12:36.000000000 -0700 |
| +++ curl-7.25.0.N/m4/curl-functions.m4 2014-10-05 15:25:05.000000000 -0700 |
| @@ -6418,92 +6418,6 @@ |
| fi |
| ]) |
| |
| - |
| -dnl CURL_CHECK_FUNC_STRLCAT |
| -dnl ------------------------------------------------- |
| -dnl Verify if strlcat is available, prototyped, and |
| -dnl can be compiled. If all of these are true, and |
| -dnl usage has not been previously disallowed with |
| -dnl shell variable curl_disallow_strlcat, then |
| -dnl HAVE_STRLCAT will be defined. |
| - |
| -AC_DEFUN([CURL_CHECK_FUNC_STRLCAT], [ |
| - AC_REQUIRE([CURL_INCLUDES_STRING])dnl |
| - # |
| - tst_links_strlcat="unknown" |
| - tst_proto_strlcat="unknown" |
| - tst_compi_strlcat="unknown" |
| - tst_allow_strlcat="unknown" |
| - # |
| - AC_MSG_CHECKING([if strlcat can be linked]) |
| - AC_LINK_IFELSE([ |
| - AC_LANG_FUNC_LINK_TRY([strlcat]) |
| - ],[ |
| - AC_MSG_RESULT([yes]) |
| - tst_links_strlcat="yes" |
| - ],[ |
| - AC_MSG_RESULT([no]) |
| - tst_links_strlcat="no" |
| - ]) |
| - # |
| - if test "$tst_links_strlcat" = "yes"; then |
| - AC_MSG_CHECKING([if strlcat is prototyped]) |
| - AC_EGREP_CPP([strlcat],[ |
| - $curl_includes_string |
| - ],[ |
| - AC_MSG_RESULT([yes]) |
| - tst_proto_strlcat="yes" |
| - ],[ |
| - AC_MSG_RESULT([no]) |
| - tst_proto_strlcat="no" |
| - ]) |
| - fi |
| - # |
| - if test "$tst_proto_strlcat" = "yes"; then |
| - AC_MSG_CHECKING([if strlcat is compilable]) |
| - AC_COMPILE_IFELSE([ |
| - AC_LANG_PROGRAM([[ |
| - $curl_includes_string |
| - ]],[[ |
| - if(0 != strlcat(0, 0, 0)) |
| - return 1; |
| - ]]) |
| - ],[ |
| - AC_MSG_RESULT([yes]) |
| - tst_compi_strlcat="yes" |
| - ],[ |
| - AC_MSG_RESULT([no]) |
| - tst_compi_strlcat="no" |
| - ]) |
| - fi |
| - # |
| - if test "$tst_compi_strlcat" = "yes"; then |
| - AC_MSG_CHECKING([if strlcat usage allowed]) |
| - if test "x$curl_disallow_strlcat" != "xyes"; then |
| - AC_MSG_RESULT([yes]) |
| - tst_allow_strlcat="yes" |
| - else |
| - AC_MSG_RESULT([no]) |
| - tst_allow_strlcat="no" |
| - fi |
| - fi |
| - # |
| - AC_MSG_CHECKING([if strlcat might be used]) |
| - if test "$tst_links_strlcat" = "yes" && |
| - test "$tst_proto_strlcat" = "yes" && |
| - test "$tst_compi_strlcat" = "yes" && |
| - test "$tst_allow_strlcat" = "yes"; then |
| - AC_MSG_RESULT([yes]) |
| - AC_DEFINE_UNQUOTED(HAVE_STRLCAT, 1, |
| - [Define to 1 if you have the strlcat function.]) |
| - ac_cv_func_strlcat="yes" |
| - else |
| - AC_MSG_RESULT([no]) |
| - ac_cv_func_strlcat="no" |
| - fi |
| -]) |
| - |
| - |
| dnl CURL_CHECK_FUNC_STRNCASECMP |
| dnl ------------------------------------------------- |
| dnl Verify if strncasecmp is available, prototyped, and |