Skip to content

Commit

Permalink
block: use strscpy() to instead of strncpy()
Browse files Browse the repository at this point in the history
The implementation of strscpy() is more robust and safer.
That's now the recommended way to copy NUL terminated strings.

Signed-off-by: Xu Panda <xu.panda@zte.com.cn>
Signed-off-by: Yang Yang <yang.yang29@zte.com>
Reviewed-by: Justin Stitt <justinstitt@google.com>
Link: https://lore.kernel.org/r/202212031422587503771@zte.com.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Xu Panda authored and Jens Axboe committed Aug 23, 2023
1 parent 3bfeb61 commit 146afeb
Showing 1 changed file with 4 additions and 8 deletions.
12 changes: 4 additions & 8 deletions block/partitions/cmdline.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,7 @@ static int parse_subpart(struct cmdline_subpart **subpart, char *partdef)

length = min_t(int, next - partdef,
sizeof(new_subpart->name) - 1);
strncpy(new_subpart->name, partdef, length);
new_subpart->name[length] = '\0';
strscpy(new_subpart->name, partdef, length);

partdef = ++next;
} else
Expand Down Expand Up @@ -140,8 +139,7 @@ static int parse_parts(struct cmdline_parts **parts, const char *bdevdef)
}

length = min_t(int, next - bdevdef, sizeof(newparts->name) - 1);
strncpy(newparts->name, bdevdef, length);
newparts->name[length] = '\0';
strscpy(newparts->name, bdevdef, length);
newparts->nr_subparts = 0;

next_subpart = &newparts->subpart;
Expand All @@ -153,8 +151,7 @@ static int parse_parts(struct cmdline_parts **parts, const char *bdevdef)
length = (!next) ? (sizeof(buf) - 1) :
min_t(int, next - bdevdef, sizeof(buf) - 1);

strncpy(buf, bdevdef, length);
buf[length] = '\0';
strscpy(buf, bdevdef, length);

ret = parse_subpart(next_subpart, buf);
if (ret)
Expand Down Expand Up @@ -267,8 +264,7 @@ static int add_part(int slot, struct cmdline_subpart *subpart,

label_min = min_t(int, sizeof(info->volname) - 1,
sizeof(subpart->name));
strncpy(info->volname, subpart->name, label_min);
info->volname[label_min] = '\0';
strscpy(info->volname, subpart->name, label_min);

snprintf(tmp, sizeof(tmp), "(%s)", info->volname);
strlcat(state->pp_buf, tmp, PAGE_SIZE);
Expand Down

0 comments on commit 146afeb

Please sign in to comment.