From f05b8e38735dff58e1794219aa0000447cd30720 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Sat, 9 Nov 2013 21:32:35 +0100 Subject: [PATCH] Check the given path for ".." --- src/add-ons/kernel/network/devices/ethernet/ethernet.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/network/devices/ethernet/ethernet.cpp b/src/add-ons/kernel/network/devices/ethernet/ethernet.cpp index d989075951..0e5941a9e6 100644 --- a/src/add-ons/kernel/network/devices/ethernet/ethernet.cpp +++ b/src/add-ons/kernel/network/devices/ethernet/ethernet.cpp @@ -118,10 +118,13 @@ ethernet_link_checker(void *) status_t ethernet_init(const char *name, net_device **_device) { - // make sure this is a device in /dev/net, but not the - // networking (userland) stack driver + // Make sure this is a device in /dev/net, but not the + // networking (userland) stack driver. + // Also make sure the user didn't pass a path like + // /dev/net/../etc. if (strncmp(name, "/dev/net/", 9) - || !strcmp(name, "/dev/net/userland_server")) + || !strcmp(name, "/dev/net/userland_server") + || strstr(name, "..") != NULL) return B_BAD_VALUE; if (access(name, F_OK) != 0)