btrfs-progs: use proper size for argv0 substitution

Make run from a long base path will overflow the argv0 buffer during
tests. Otherwise, this would happen for all the standalone binaries that
use set_argv0.

Original report:
https://bbs.archlinux.org/viewtopic.php?id=189861

Reported-by: WorMzy Tykashi <wormzy.tykashi@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
master
David Sterba 2014-11-18 18:05:20 +01:00
parent a1c3bcf1c2
commit 5ebf59ff58
2 changed files with 3 additions and 2 deletions

View File

@ -66,7 +66,8 @@ void fixup_argv0(char **argv, const char *token)
void set_argv0(char **argv)
{
sprintf(argv0_buf, "%s", argv[0]);
strncpy(argv0_buf, argv[0], sizeof(argv0_buf));
argv0_buf[sizeof(argv0_buf) - 1] = 0;
}
int check_argc_exact(int nargs, int expected)

View File

@ -38,7 +38,7 @@
#define BTRFS_UUID_UNPARSED_SIZE 37
#define ARGV0_BUF_SIZE 64
#define ARGV0_BUF_SIZE PATH_MAX
int check_argc_exact(int nargs, int expected);
int check_argc_min(int nargs, int expected);