|
@@ -124,7 +124,7 @@ static inline void free_dev_ioctl(struct autofs_dev_ioctl *param)
|
|
|
|
|
|
/*
|
|
|
* Check sanity of parameter control fields and if a path is present
|
|
|
- * check that it has a "/" and is terminated.
|
|
|
+ * check that it is terminated and contains at least one "/".
|
|
|
*/
|
|
|
static int validate_dev_ioctl(int cmd, struct autofs_dev_ioctl *param)
|
|
|
{
|
|
@@ -138,15 +138,16 @@ static int validate_dev_ioctl(int cmd, struct autofs_dev_ioctl *param)
|
|
|
}
|
|
|
|
|
|
if (param->size > sizeof(*param)) {
|
|
|
- err = check_name(param->path);
|
|
|
+ err = invalid_str(param->path,
|
|
|
+ (void *) ((size_t) param + param->size));
|
|
|
if (err) {
|
|
|
- AUTOFS_WARN("invalid path supplied for cmd(0x%08x)",
|
|
|
- cmd);
|
|
|
+ AUTOFS_WARN(
|
|
|
+ "path string terminator missing for cmd(0x%08x)",
|
|
|
+ cmd);
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- err = invalid_str(param->path,
|
|
|
- (void *) ((size_t) param + param->size));
|
|
|
+ err = check_name(param->path);
|
|
|
if (err) {
|
|
|
AUTOFS_WARN("invalid path supplied for cmd(0x%08x)",
|
|
|
cmd);
|