From 122226c3f398feefca9ea86d6ce9f7c9c61dfee8 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 21 Mar 2018 13:02:26 +0100 Subject: [PATCH] heimdal: Fix size types and array access MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes compilation with -Wstrict-overflow=2. with CFLAGS="-O3 -Werror=strict-overflow -Wstrict-overflow=2" gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) gives: addr_families.c: In function ‘krb5_sockaddr2address’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:851:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_sockaddr2address (krb5_context context, ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_sockaddr2port’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:879:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_sockaddr2port (krb5_context context, ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_addr2sockaddr’: addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:914:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_addr2sockaddr (krb5_context context, ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_max_sockaddr_size’: addr_families.c:955:2: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for(a = at; a < at + num_addrs; ++a) ^ addr_families.c:950:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_max_sockaddr_size (void) ^ addr_families.c:955:2: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for(a = at; a < at + num_addrs; ++a) ^ addr_families.c:955:2: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c:955:2: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_sockaddr_uninteresting’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:974:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_sockaddr_uninteresting(const struct sockaddr *sa) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_sockaddr_is_loopback’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:983:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_sockaddr_is_loopback(const struct sockaddr *sa) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_h_addr2sockaddr’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1011:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_h_addr2sockaddr (krb5_context context, ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_h_addr2addr’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1042:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_h_addr2addr (krb5_context context, ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_anyaddr’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1073:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_anyaddr (krb5_context context, ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_print_address’: addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1108:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_print_address (const krb5_address *addr, ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_address_order’: addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1238:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_address_order(krb5_context context, ^ addr_families.c:1238:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c: In function ‘krb5_free_address’: addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1333:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_free_address(krb5_context context, ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_copy_address’: addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1383:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_copy_address(krb5_context context, ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:820:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] addr_families.c: In function ‘krb5_address_prefixlen_boundary’: addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:1537:1: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] krb5_address_prefixlen_boundary(krb5_context context, ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] for (a = at; a < at + num_addrs; ++a) ^ addr_families.c:831:5: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow] CC libkrb5_la-config_file.lo Signed-off-by: Andreas Schneider Reviewed-by: Jeremy Allison (Similar to Samba commit aa17db1f4061920512396032fcd3c7c8a4a8f38f) --- lib/krb5/addr_families.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/krb5/addr_families.c b/lib/krb5/addr_families.c index 7ac0fa93f..9c98a77ae 100644 --- a/lib/krb5/addr_families.c +++ b/lib/krb5/addr_families.c @@ -804,7 +804,7 @@ static struct addr_operations at[] = { } }; -static int num_addrs = sizeof(at) / sizeof(at[0]); +static size_t num_addrs = sizeof(at) / sizeof(at[0]); static size_t max_sockaddr_size = 0; @@ -815,22 +815,24 @@ static size_t max_sockaddr_size = 0; static struct addr_operations * find_af(int af) { - struct addr_operations *a; + size_t i; - for (a = at; a < at + num_addrs; ++a) - if (af == a->af) - return a; + for (i = 0; i < num_addrs; i++) { + if (af == at[i].af) + return &at[i]; + } return NULL; } static struct addr_operations * find_atype(krb5_address_type atype) { - struct addr_operations *a; + size_t i; - for (a = at; a < at + num_addrs; ++a) - if (atype == a->atype) - return a; + for (i = 0; i < num_addrs; i++) { + if (atype == at[i].atype) + return &at[i]; + } return NULL; } @@ -950,10 +952,10 @@ KRB5_LIB_FUNCTION size_t KRB5_LIB_CALL krb5_max_sockaddr_size (void) { if (max_sockaddr_size == 0) { - struct addr_operations *a; + size_t i; - for(a = at; a < at + num_addrs; ++a) - max_sockaddr_size = max(max_sockaddr_size, a->max_sockaddr_size); + for (i = 0; i < num_addrs; i++) + max_sockaddr_size = max(max_sockaddr_size, at[i].max_sockaddr_size); } return max_sockaddr_size; }