]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
db: validate name and namelen in attr_set_f and attr_remove_f
authorChristoph Hellwig <hch@lst.de>
Mon, 11 May 2020 19:00:18 +0000 (15:00 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Mon, 11 May 2020 19:00:18 +0000 (15:00 -0400)
libxfs has stopped validating these parameters internally, so do it
in the xfs_db commands.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
db/attrset.c

index 0a464983d2bb574f9d63b5ea0065d79af6f62782..e35752711505b9eb57dd4bdbc7602b0f39ef030b 100644 (file)
@@ -130,7 +130,16 @@ attr_set_f(
        }
 
        args.name = (const unsigned char *)argv[optind];
+       if (!args.name) {
+               dbprintf(_("invalid name\n"));
+               return 0;
+       }
+
        args.namelen = strlen(argv[optind]);
+       if (args.namelen >= MAXNAMELEN) {
+               dbprintf(_("name too long\n"));
+               return 0;
+       }
 
        if (args.valuelen) {
                args.value = memalign(getpagesize(), args.valuelen);
@@ -216,7 +225,16 @@ attr_remove_f(
        }
 
        args.name = (const unsigned char *)argv[optind];
+       if (!args.name) {
+               dbprintf(_("invalid name\n"));
+               return 0;
+       }
+
        args.namelen = strlen(argv[optind]);
+       if (args.namelen >= MAXNAMELEN) {
+               dbprintf(_("name too long\n"));
+               return 0;
+       }
 
        if (libxfs_iget(mp, NULL, iocur_top->ino, 0, &args.dp,
                        &xfs_default_ifork_ops)) {