dhcpcd: Fix buffer overflow at startup

Fixes: #13252 - dhcpcd fails in next
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
Michael Tremer
2023-08-25 17:25:23 +00:00
parent d45c4768f9
commit 8d5a43f00b
3 changed files with 56 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
From f798bf23af8e5a0eae38931912e2b67e1d45aca4 Mon Sep 17 00:00:00 2001
From: Tobias Heider <tobhe@users.noreply.github.com>
Date: Sat, 12 Aug 2023 21:59:21 +0200
Subject: [PATCH] dhcpcd: Fix off-by-one overflow when read() writes full
BUFSIZ (#236)
---
src/dhcpcd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/dhcpcd.c b/src/dhcpcd.c
index e06733d3..688a3a6d 100644
--- a/src/dhcpcd.c
+++ b/src/dhcpcd.c
@@ -1822,7 +1822,7 @@ dhcpcd_stderr_cb(void *arg, unsigned short events)
if (!(events & ELE_READ))
return;
- len = read(ctx->stderr_fd, log, sizeof(log));
+ len = read(ctx->stderr_fd, log, sizeof(log) - 1);
if (len == -1) {
if (errno != ECONNRESET)
logerr(__func__);
--
2.39.2

View File

@@ -0,0 +1,28 @@
From 1bd8fc7d4b34f752a32709d277a897e5ad202d97 Mon Sep 17 00:00:00 2001
From: Tobias Heider <tobhe@users.noreply.github.com>
Date: Tue, 15 Aug 2023 18:06:48 +0200
Subject: [PATCH] privsep: fix strlcpy overflow in psp_ifname (#239)
When running our Ubuntu tests with libc6 and strlcpy overflow checks
enabled we found that the wrong size is passed to strlcpy resulting
in a crash because of an overflow.
---
src/privsep.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/privsep.c b/src/privsep.c
index b11c0351..cfe54742 100644
--- a/src/privsep.c
+++ b/src/privsep.c
@@ -1200,7 +1200,7 @@ ps_newprocess(struct dhcpcd_ctx *ctx, struct ps_id *psid)
#endif
if (!(ctx->options & DHCPCD_MANAGER))
- strlcpy(psp->psp_ifname, ctx->ifv[0], sizeof(psp->psp_name));
+ strlcpy(psp->psp_ifname, ctx->ifv[0], sizeof(psp->psp_ifname));
TAILQ_INSERT_TAIL(&ctx->ps_processes, psp, next);
return psp;
}
--
2.39.2