Reported by Coverity.
Signed-off-by: Stefano Brivio
---
conf.c | 7 +++++--
packet.c | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/conf.c b/conf.c
index ea51de4..ca44b30 100644
--- a/conf.c
+++ b/conf.c
@@ -369,6 +369,7 @@ static int conf_ns_opt(struct ctx *c,
int ufd = -1, nfd = -1, try, ret, netns_only_reset = c->netns_only;
char userns[PATH_MAX] = { 0 }, netns[PATH_MAX];
char *endptr;
+ long pid_arg;
pid_t pid;
if (c->netns_only && *conf_userns) {
@@ -379,10 +380,12 @@ static int conf_ns_opt(struct ctx *c,
/* It might be a PID, a netns path, or a netns name */
for (try = 0; try < 3; try++) {
if (try == 0) {
- pid = strtol(optarg, &endptr, 10);
- if (*endptr || pid > INT_MAX)
+ pid_arg = strtol(optarg, &endptr, 10);
+ if (*endptr || pid_arg < 0 || pid_arg > INT_MAX)
continue;
+ pid = pid_arg;
+
if (!*conf_userns && !c->netns_only) {
ret = snprintf(userns, PATH_MAX,
"/proc/%i/ns/user", pid);
diff --git a/packet.c b/packet.c
index fa9e9b4..3358c2c 100644
--- a/packet.c
+++ b/packet.c
@@ -57,7 +57,7 @@ void packet_add_do(struct pool *p, size_t len, const char *start,
return;
}
- if ((unsigned int)((intptr_t)start - (intptr_t)p->buf) > UINT32_MAX) {
+ if ((uint64_t)((uintptr_t)start - (uintptr_t)p->buf) > UINT32_MAX) {
trace("add packet start %p, buffer start %p, %s:%i",
start, p->buf, func, line);
return;
--
2.35.1