From: Wang Shilong <wshilong@xxxxxxx> See following output: [root@mds03 client]# chattr -R +P -p 4294967296 testdir/ [root@mds03 client]# lsattr -dp testdir/ 0 ----------------P testdir/ [root@mds03 client]# chattr -R +P -p 4294967297 testdir/ [root@mds03 client]# lsattr -dp testdir/ 1 ----------------P testdir/ Reported-by: Shuichi Ihara <sihara@xxxxxxx> Signed-off-by: Wang Shilong <wshilong@xxxxxxx> --- lib/ext2fs/ext2_fs.h | 2 ++ misc/chattr.c | 11 ++++++++--- misc/mke2fs.c | 2 -- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h index 3b55000..99f89ec 100644 --- a/lib/ext2fs/ext2_fs.h +++ b/lib/ext2fs/ext2_fs.h @@ -75,6 +75,8 @@ */ #define EXT2_LINK_MAX 65000 +#define MAX_32_NUM ((((unsigned long long) 1) << 32) - 1) + /* * Macro-instructions used to manage several block sizes */ diff --git a/misc/chattr.c b/misc/chattr.c index a5b401a..bab20e8 100644 --- a/misc/chattr.c +++ b/misc/chattr.c @@ -152,13 +152,18 @@ static int decode_arg (int * i, int argc, char ** argv) if (*p == 'p') { (*i)++; if (*i >= argc) - usage (); - project = strtol (argv[*i], &tmp, 0); + usage(); + project = strtol(argv[*i], &tmp, 0); if (*tmp) { com_err (program_name, 0, _("bad project - %s\n"), argv[*i]); - usage (); + usage(); + } + if (project > MAX_32_NUM) { + com_err(program_name, 0, + _("Kernel does not support set project ID this large")); + exit(1); } set_project = 1; continue; diff --git a/misc/mke2fs.c b/misc/mke2fs.c index d585a9e..22812cd 100644 --- a/misc/mke2fs.c +++ b/misc/mke2fs.c @@ -63,8 +63,6 @@ extern int optind; #define STRIDE_LENGTH 8 -#define MAX_32_NUM ((((unsigned long long) 1) << 32) - 1) - #ifndef __sparc__ #define ZAP_BOOTBLOCK #endif -- 1.8.3.1