From: Lennart Poettering Date: Mon, 12 Feb 2024 14:32:25 +0000 (+0100) Subject: btrfs-util: use memdup_suffix0() instead of strndup() at one more place X-Git-Tag: v256-rc1~891^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5c41c6138a6f0fe1c47c0a1db15ec3113622492;p=thirdparty%2Fsystemd.git btrfs-util: use memdup_suffix0() instead of strndup() at one more place The structure we copy this out is a large (unaligned) binary blob, hence let's better use the memdup_suffix0() so that gcc doesn't make assumption about the source being a valid string. --- diff --git a/src/shared/btrfs-util.c b/src/shared/btrfs-util.c index 57e11dc1a81..b0ecf8f8204 100644 --- a/src/shared/btrfs-util.c +++ b/src/shared/btrfs-util.c @@ -970,7 +970,7 @@ static int subvol_remove_children(int fd, const char *subvolume, uint64_t subvol ref = BTRFS_IOCTL_SEARCH_HEADER_BODY(sh); - p = strndup((char*) ref + sizeof(struct btrfs_root_ref), le64toh(ref->name_len)); + p = memdup_suffix0((char*) ref + sizeof(struct btrfs_root_ref), le64toh(ref->name_len)); if (!p) return -ENOMEM; @@ -1345,7 +1345,7 @@ static int subvol_snapshot_children( continue; ref = BTRFS_IOCTL_SEARCH_HEADER_BODY(sh); - p = strndup((char*) ref + sizeof(struct btrfs_root_ref), le64toh(ref->name_len)); + p = memdup_suffix0((char*) ref + sizeof(struct btrfs_root_ref), le64toh(ref->name_len)); if (!p) return -ENOMEM;