summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2023-01-31 23:26:04 -0500
committerTheodore Ts'o <tytso@mit.edu>2023-01-31 23:26:04 -0500
commit91f8beba90252aa38cad65e7f211859b9feff5e9 (patch)
tree0d850cce28236d2a9e3d13184a6bb9f32e8ea711
parentd6e6a9b9ad0d2924b89b31bc88b017614598626a (diff)
downloade2fsprogs-91f8beba90252aa38cad65e7f211859b9feff5e9.tar.gz
e4defrag: avoid potential buffer overflow caused by very long file names
Addresses-Coverity-Bug: 1520603 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r--misc/e4defrag.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/misc/e4defrag.c b/misc/e4defrag.c
index 33bd05d2..99bc2cd7 100644
--- a/misc/e4defrag.c
+++ b/misc/e4defrag.c
@@ -1041,7 +1041,7 @@ static int file_statistic(const char *file, const struct stat64 *buf,
__u64 size_per_ext = 0;
float ratio = 0.0;
ext4_fsblk_t blk_count = 0;
- char msg_buffer[PATH_MAX + 24];
+ char msg_buffer[PATH_MAX + 48];
struct fiemap_extent_list *physical_list_head = NULL;
struct fiemap_extent_list *logical_list_head = NULL;
@@ -1210,8 +1210,9 @@ static int file_statistic(const char *file, const struct stat64 *buf,
if (mode_flag & DETAIL) {
/* Print statistic info */
- sprintf(msg_buffer, "[%u/%u]%s",
- defraged_file_count, total_count, file);
+ sprintf(msg_buffer, "[%u/%u]%.*s",
+ defraged_file_count, total_count,
+ PATH_MAX, file);
if (current_uid == ROOT_UID) {
if (strlen(msg_buffer) > 40)
printf("\033[79;0H\033[K%s\n"