On Thu, Nov 20, 2014 at 23:16, patrick keshishian wrote: > > any concern over 'u_int i' vs 'size_t len' type-mismatch?
Yes. There are a few instances where u_int is used in place of size_t. Another instance where off_t is cast down to u_int. Even if it can't overflow, the safer idiom is to cast up. Some of this code is copied from relayd; diff below is for both. Index: httpd/config.c =================================================================== RCS file: /cvs/src/usr.sbin/httpd/config.c,v retrieving revision 1.22 diff -u -p -r1.22 config.c --- httpd/config.c 5 Sep 2014 10:04:20 -0000 1.22 +++ httpd/config.c 21 Nov 2014 19:34:42 -0000 @@ -346,7 +346,7 @@ config_getserver(struct httpd *env, stru /* Reset these variables to avoid free'ing invalid pointers */ serverconfig_reset(&srv_conf); - if ((u_int)(IMSG_DATA_SIZE(imsg) - s) < + if ((off_t)(IMSG_DATA_SIZE(imsg) - s) < (srv_conf.ssl_cert_len + srv_conf.ssl_key_len)) { log_debug("%s: invalid message length", __func__); goto fail; Index: httpd/httpd.c =================================================================== RCS file: /cvs/src/usr.sbin/httpd/httpd.c,v retrieving revision 1.24 diff -u -p -r1.24 httpd.c --- httpd/httpd.c 11 Nov 2014 15:54:45 -0000 1.24 +++ httpd/httpd.c 21 Nov 2014 19:32:18 -0000 @@ -493,7 +493,7 @@ canonicalize_host(const char *host, char { struct sockaddr_in sin4; struct sockaddr_in6 sin6; - u_int i, j; + size_t i, j; size_t plen; char c; @@ -692,7 +692,7 @@ evbuffer_getline(struct evbuffer *evb) u_int8_t *ptr = EVBUFFER_DATA(evb); size_t len = EVBUFFER_LENGTH(evb); char *str; - u_int i; + size_t i; /* Safe version of evbuffer_readline() */ if ((str = get_string(ptr, len)) == NULL) Index: relayd/config.c =================================================================== RCS file: /cvs/src/usr.sbin/relayd/config.c,v retrieving revision 1.19 diff -u -p -r1.19 config.c --- relayd/config.c 19 Nov 2014 10:24:40 -0000 1.19 +++ relayd/config.c 21 Nov 2014 19:35:00 -0000 @@ -912,7 +912,7 @@ config_getrelay(struct relayd *env, stru } } - if ((u_int)(IMSG_DATA_SIZE(imsg) - s) < + if ((off_t)(IMSG_DATA_SIZE(imsg) - s) < (rlay->rl_conf.ssl_cert_len + rlay->rl_conf.ssl_key_len + rlay->rl_conf.ssl_ca_len + Index: relayd/relayd.c =================================================================== RCS file: /cvs/src/usr.sbin/relayd/relayd.c,v retrieving revision 1.132 diff -u -p -r1.132 relayd.c --- relayd/relayd.c 19 Nov 2014 10:24:40 -0000 1.132 +++ relayd/relayd.c 21 Nov 2014 19:37:30 -0000 @@ -1340,7 +1340,7 @@ canonicalize_host(const char *host, char { struct sockaddr_in sin4; struct sockaddr_in6 sin6; - u_int i, j; + size_t i, j; size_t plen; char c;