From b6eab2a491184dcf6361baeca709c3d781a165bb Mon Sep 17 00:00:00 2001 From: Antony Pavlov Date: Tue, 2 Jul 2019 12:59:59 +0300 Subject: sandbox: prevent segfault in tap_alloc() Tap network interface initialization in sandbox barebox leads to segfault under Debian Buster/Sid. The problem is that strcpy(dev, ifr.ifr_name) inside tap_alloc() tries to alter read-only data passed by tap_probe() and barebox receives SIGSEGV. Nobody uses network interface name returned by tap_alloc() so we can drop this strcpy(). Signed-off-by: Antony Pavlov Signed-off-by: Sascha Hauer --- arch/sandbox/mach-sandbox/include/mach/linux.h | 2 +- arch/sandbox/os/tap.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/sandbox/mach-sandbox/include/mach/linux.h b/arch/sandbox/mach-sandbox/include/mach/linux.h index 52360f8771..7d0ed55735 100644 --- a/arch/sandbox/mach-sandbox/include/mach/linux.h +++ b/arch/sandbox/mach-sandbox/include/mach/linux.h @@ -8,7 +8,7 @@ int sandbox_add_device(struct device_d *dev); struct fb_bitfield; int linux_register_device(const char *name, void *start, void *end); -int tap_alloc(char *dev); +int tap_alloc(const char *dev); uint64_t linux_get_time(void); int linux_read(int fd, void *buf, size_t count); int linux_read_nonblock(int fd, void *buf, size_t count); diff --git a/arch/sandbox/os/tap.c b/arch/sandbox/os/tap.c index 0e29e8e8ad..3a29a4be64 100644 --- a/arch/sandbox/os/tap.c +++ b/arch/sandbox/os/tap.c @@ -28,7 +28,7 @@ #include #include -int tap_alloc(char *dev) +int tap_alloc(const char *dev) { struct ifreq ifr; int fd, err; @@ -55,7 +55,6 @@ int tap_alloc(char *dev) return err; } - strcpy(dev, ifr.ifr_name); return fd; } -- cgit v1.2.3