summaryrefslogtreecommitdiff
blob: 7bcf53678de980f1f8bac2f4fb4604c2bf7f179d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
--- vmblock-only/linux/control.c	2014-03-15 15:28:40.871076076 +0100
+++ vmblock-only/linux/control.c.new	2014-03-15 15:29:15.079074439 +0100
@@ -279,11 +279,17 @@
    int i;
    int retval;
 
-   name = getname(buf);
+   name = __getname();
    if (IS_ERR(name)) {
       return PTR_ERR(name);
    }
 
+   i = strncpy_from_user(name, buf, PATH_MAX);
+   if (i < 0 || i == PATH_MAX) {
+      __putname(name);
+      return -EINVAL;
+   }
+
    for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) {