From a19fefb0706f939d2df7a76704ee549fecb1c4fd Mon Sep 17 00:00:00 2001 From: Eric Gallager Date: Mon, 12 Feb 2018 01:42:47 -0500 Subject: build: add picky compiler warning flags for gcc 6 and 7 --- acinclude.m4 | 0 lib/curl_addrinfo.c | 4 ++-- lib/mime.c | 5 ++++- lib/tftp.c | 2 +- lib/timeval.c | 2 +- m4/curl-compilers.m4 | 17 +++++++++++++++++ 6 files changed, 25 insertions(+), 5 deletions(-) mode change 100755 => 100644 acinclude.m4 diff --git a/acinclude.m4 b/acinclude.m4 old mode 100755 new mode 100644 diff --git a/lib/curl_addrinfo.c b/lib/curl_addrinfo.c index 95a3f1050..01775f704 100644 --- a/lib/curl_addrinfo.c +++ b/lib/curl_addrinfo.c @@ -345,7 +345,7 @@ Curl_he2ai(const struct hostent *he, int port) addr = (void *)ai->ai_addr; /* storage area for this info */ memcpy(&addr->sin_addr, curr, sizeof(struct in_addr)); - addr->sin_family = (unsigned short)(he->h_addrtype); + addr->sin_family = (sa_family_t)(he->h_addrtype); addr->sin_port = htons((unsigned short)port); break; @@ -354,7 +354,7 @@ Curl_he2ai(const struct hostent *he, int port) addr6 = (void *)ai->ai_addr; /* storage area for this info */ memcpy(&addr6->sin6_addr, curr, sizeof(struct in6_addr)); - addr6->sin6_family = (unsigned short)(he->h_addrtype); + addr6->sin6_family = (sa_family_t)(he->h_addrtype); addr6->sin6_port = htons((unsigned short)port); break; #endif diff --git a/lib/mime.c b/lib/mime.c index 89819a935..ce56d7873 100644 --- a/lib/mime.c +++ b/lib/mime.c @@ -1193,7 +1193,10 @@ CURLcode Curl_mime_duppart(curl_mimepart *dst, const curl_mimepart *src) } /* Duplicate other fields. */ - dst->encoder = src->encoder; + if(dst != NULL) + dst->encoder = src->encoder; + else + res = CURLE_WRITE_ERROR; if(!res) res = curl_mime_type(dst, src->mimetype); if(!res) diff --git a/lib/tftp.c b/lib/tftp.c index 20dc60040..7fd7b3751 100644 --- a/lib/tftp.c +++ b/lib/tftp.c @@ -1010,7 +1010,7 @@ static CURLcode tftp_connect(struct connectdata *conn, bool *done) state->requested_blksize = blksize; ((struct sockaddr *)&state->local_addr)->sa_family = - (unsigned short)(conn->ip_addr->ai_family); + (sa_family_t)(conn->ip_addr->ai_family); tftp_set_timeouts(state); diff --git a/lib/timeval.c b/lib/timeval.c index d11b95197..f4bf83531 100644 --- a/lib/timeval.c +++ b/lib/timeval.c @@ -110,7 +110,7 @@ struct curltime Curl_now(void) usecs /= 1000; cnow.tv_sec = usecs / 1000000; - cnow.tv_usec = usecs % 1000000; + cnow.tv_usec = (int)(usecs % 1000000); return cnow; } diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4 index 422946e26..20bdbd706 100644 --- a/m4/curl-compilers.m4 +++ b/m4/curl-compilers.m4 @@ -1044,6 +1044,23 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [ tmp_CFLAGS="$tmp_CFLAGS -Wdouble-promotion" fi # + dnl Only gcc 6 or later + if test "$compiler_num" -ge "600"; then + tmp_CFLAGS="$tmp_CFLAGS -Wshift-negative-value" + tmp_CFLAGS="$tmp_CFLAGS -Wshift-overflow=2" + tmp_CFLAGS="$tmp_CFLAGS -Wnull-dereference" + tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-cond" + fi + # + dnl Only gcc 7 or later + if test "$compiler_num" -ge "700"; then + tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-branches" + tmp_CFLAGS="$tmp_CFLAGS -Wrestrict" + tmp_CFLAGS="$tmp_CFLAGS -Walloc-zero" + tmp_CFLAGS="$tmp_CFLAGS -Wformat-overflow=2" + tmp_CFLAGS="$tmp_CFLAGS -Wformat-truncation=2" + fi + # fi # dnl Do not issue warnings for code in system include paths. -- cgit v1.2.1