Whamcloud - gitweb
e4defrag: avoid potential buffer overflow caused by very long file names
authorTheodore Ts'o <tytso@mit.edu>
Wed, 1 Feb 2023 04:26:04 +0000 (23:26 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 1 Feb 2023 04:26:04 +0000 (23:26 -0500)
Addresses-Coverity-Bug: 1520603
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/e4defrag.c

index 33bd05d..99bc2cd 100644 (file)
@@ -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"