Re: [PATCH] staging: erofs: refuse to mount images with malformed volume name

2019-08-18 Thread Chao Yu
On 2019-8-18 18:28, Gao Xiang wrote:
> From: Gao Xiang 
> 
> As Richard reminder [1], A valid volume name should be
> ended in NIL terminator within the length of volume_name.
> 
> Since this field currently isn't really used, let's fix
> it to avoid potential bugs in the future.
> 
> [1] 
> https://lore.kernel.org/r/1133002215.69049.1566119033047.javamail.zim...@nod.at/
> 
> Reported-by: Richard Weinberger 
> Signed-off-by: Gao Xiang 

Reviewed-by: Chao Yu 

Thanks,


Re: [PATCH] staging: erofs: refuse to mount images with malformed volume name

2019-08-18 Thread kbuild test robot
Hi Gao,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[cannot apply to v5.3-rc4 next-20190816]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Gao-Xiang/staging-erofs-refuse-to-mount-images-with-malformed-volume-name/20190818-193037
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gcc (GCC) 7.4.0
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=sparc64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot 

All errors (new ones prefixed by >>):

   drivers/staging/erofs/super.c: In function 'superblock_read':
>> drivers/staging/erofs/super.c:153:10: error: 'EFSCORRUPTED' undeclared 
>> (first use in this function); did you mean 'FS_NRSUPER'?
  ret = -EFSCORRUPTED;
 ^~~~
 FS_NRSUPER
   drivers/staging/erofs/super.c:153:10: note: each undeclared identifier is 
reported only once for each function it appears in

vim +153 drivers/staging/erofs/super.c

   140  
   141  sbi->root_nid = le16_to_cpu(layout->root_nid);
   142  sbi->inos = le64_to_cpu(layout->inos);
   143  
   144  sbi->build_time = le64_to_cpu(layout->build_time);
   145  sbi->build_time_nsec = le32_to_cpu(layout->build_time_nsec);
   146  
   147  memcpy(>s_uuid, layout->uuid, sizeof(layout->uuid));
   148  
   149  ret = strscpy(sbi->volume_name, layout->volume_name,
   150sizeof(layout->volume_name));
   151  if (ret < 0) {  /* -E2BIG */
   152  errln("bad volume name without NIL terminator");
 > 153  ret = -EFSCORRUPTED;
   154  goto out;
   155  }
   156  ret = 0;
   157  out:
   158  brelse(bh);
   159  return ret;
   160  }
   161  

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


[PATCH] staging: erofs: refuse to mount images with malformed volume name

2019-08-18 Thread Gao Xiang
From: Gao Xiang 

As Richard reminder [1], A valid volume name should be
ended in NIL terminator within the length of volume_name.

Since this field currently isn't really used, let's fix
it to avoid potential bugs in the future.

[1] 
https://lore.kernel.org/r/1133002215.69049.1566119033047.javamail.zim...@nod.at/

Reported-by: Richard Weinberger 
Signed-off-by: Gao Xiang 
---
 drivers/staging/erofs/super.c | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/erofs/super.c b/drivers/staging/erofs/super.c
index f65a1ff9f42f..2da471010a86 100644
--- a/drivers/staging/erofs/super.c
+++ b/drivers/staging/erofs/super.c
@@ -131,9 +131,14 @@ static int superblock_read(struct super_block *sb)
sbi->build_time_nsec = le32_to_cpu(layout->build_time_nsec);
 
memcpy(>s_uuid, layout->uuid, sizeof(layout->uuid));
-   memcpy(sbi->volume_name, layout->volume_name,
-  sizeof(layout->volume_name));
 
+   ret = strscpy(sbi->volume_name, layout->volume_name,
+ sizeof(layout->volume_name));
+   if (ret < 0) {  /* -E2BIG */
+   errln("bad volume name without NIL terminator");
+   ret = -EFSCORRUPTED;
+   goto out;
+   }
ret = 0;
 out:
brelse(bh);
-- 
2.17.1