From efb79b1e806142865f63255274f88f43af0c3362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Gomez?= Date: Sun, 9 Jan 2022 21:24:25 +0100 Subject: [PATCH] sanitize: a bit evolved size_t cast for get_str_elem --- src/irc.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/irc.c b/src/irc.c index 890943a..a4cee2e 100644 --- a/src/irc.c +++ b/src/irc.c @@ -721,25 +721,29 @@ static char *get_str_elem(char *str, int num) int index = 0; while ((c = strchr(cur, PASS_SEP))) { + long len = c - cur; if (index < num) { index++; cur = c + 1; continue; } - if (c - cur < 1) + if (len < 1) return NULL; - ret = bip_malloc(c - cur + 1); - memcpy(ret, cur, c - cur); - ret[c - cur] = 0; + // len always > 0 + ret = bip_malloc((size_t)len + 1); + memcpy(ret, cur, (size_t)len); + ret[len] = 0; return ret; } if (index == num) { + long len; c = str + strlen(str); - if (c - cur < 1) + len = c - cur; + if (len < 1) return NULL; - ret = bip_malloc(c - cur + 1); - memcpy(ret, cur, c - cur); - ret[c - cur] = 0; + ret = bip_malloc((size_t)len + 1); + memcpy(ret, cur, (size_t)len); + ret[len] = 0; return ret; } return NULL;