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;