summaryrefslogtreecommitdiffstats
path: root/fs/udf
diff options
context:
space:
mode:
authorFabian Frederick <fabf@skynet.be>2014-01-29 17:13:16 +0800
committerJan Kara <jack@suse.cz>2014-03-03 11:30:57 +0100
commit8c6915aef70dc4633d8aec4bc3b4f6fb34e88063 (patch)
tree21dfb39726ccd03693453814c889f19ed2e1bb15 /fs/udf
parent0414855fdc4a40da05221fc6062cccbc0c30f169 (diff)
downloadlinux-8c6915aef70dc4633d8aec4bc3b4f6fb34e88063.tar.bz2
fs: udf: parse_options: blocksize check
Both affs and isofs check for blocksize integrity during parse_options.Do the same thing for udf. Valid values : 512, 1024, 2048 or 4096 bytes. Signed-off-by: Fabian Frederick <fabf@skynet.be> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf')
-rw-r--r--fs/udf/super.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 3306b9f69bed..ac765386004e 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -505,6 +505,7 @@ static int udf_parse_options(char *options, struct udf_options *uopt,
while ((p = strsep(&options, ",")) != NULL) {
substring_t args[MAX_OPT_ARGS];
int token;
+ unsigned n;
if (!*p)
continue;
@@ -516,7 +517,10 @@ static int udf_parse_options(char *options, struct udf_options *uopt,
case Opt_bs:
if (match_int(&args[0], &option))
return 0;
- uopt->blocksize = option;
+ n = option;
+ if (n != 512 && n != 1024 && n != 2048 && n != 4096)
+ return 0;
+ uopt->blocksize = n;
uopt->flags |= (1 << UDF_FLAG_BLOCKSIZE_SET);
break;
case Opt_unhide: