summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.cz>2014-11-18 18:05:20 +0100
committerDavid Sterba <dsterba@suse.cz>2014-11-18 18:05:20 +0100
commit5ebf59ff5852dd4f37d99ab4e49fef1c579d6665 (patch)
tree00b25fda52adddd8319ae8a859f56189f816f1e5
parenta1c3bcf1c294909801dbc23e77cac895dd14c41e (diff)
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>
-rw-r--r--utils.c3
-rw-r--r--utils.h2
2 files changed, 3 insertions, 2 deletions
diff --git a/utils.c b/utils.c
index 4b3bace4..2a924161 100644
--- a/utils.c
+++ b/utils.c
@@ -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)
diff --git a/utils.h b/utils.h
index 8c946246..289e86b4 100644
--- a/utils.h
+++ b/utils.h
@@ -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);