22 lines
533 B
Diff
22 lines
533 B
Diff
--- 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--) {
|
|
name[i] = '\0';
|
|
}
|