summaryrefslogtreecommitdiff
path: root/server/InterfaceController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/InterfaceController.cpp')
-rw-r--r--server/InterfaceController.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/server/InterfaceController.cpp b/server/InterfaceController.cpp
index e55114f4..73e96ee8 100644
--- a/server/InterfaceController.cpp
+++ b/server/InterfaceController.cpp
@@ -111,6 +111,7 @@ InterfaceController::~InterfaceController() {
*/
int InterfaceController::interfaceCommand(int argc, char *argv[], char **rbuf) {
int ret = -ENOSYS;
+ if (!isIfaceName(argv[2])) return -ENOENT;
if (sendCommand_)
ret = sendCommand_(argc, argv, rbuf);
@@ -119,6 +120,10 @@ int InterfaceController::interfaceCommand(int argc, char *argv[], char **rbuf) {
int InterfaceController::writeIPv6ProcPath(const char *interface, const char *setting, const char *value) {
char *path;
+ if (!isIfaceName(interface)) {
+ errno = ENOENT;
+ return -1;
+ }
asprintf(&path, "%s/%s/%s", ipv6_proc_path, interface, setting);
int success = writeFile(path, value, strlen(value));
free(path);
@@ -187,18 +192,25 @@ int InterfaceController::getMtu(const char *interface, int *mtu)
char buf[16];
int size = sizeof(buf);
char *path;
+ if (!isIfaceName(interface)) {
+ errno = ENOENT;
+ return -1;
+ }
asprintf(&path, "%s/%s/mtu", sys_net_path, interface);
int success = readFile(path, buf, &size);
if (!success && mtu)
*mtu = atoi(buf);
free(path);
return success;
-
}
int InterfaceController::setMtu(const char *interface, const char *mtu)
{
char *path;
+ if (!isIfaceName(interface)) {
+ errno = ENOENT;
+ return -1;
+ }
asprintf(&path, "%s/%s/mtu", sys_net_path, interface);
int success = writeFile(path, mtu, strlen(mtu));
free(path);