mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-08-21 08:46:02 +00:00
Port short_read to UBSan
Problem reported by Kirill Furman in: https://lists.gnu.org/r/bug-tar/2025-06/msg00002.html * src/buffer.c (short_read): Use (char *) record_start, instead of record_start->buffer, to avoid undefined behavior accessing past end of buffer. In practice the undefined behavior is harmless unless running with -fsanitize=undefined or a similarly-picky implementation.
This commit is contained in:
+2
-5
@@ -959,11 +959,8 @@ archive_is_dev (void)
|
||||
static void
|
||||
short_read (idx_t status)
|
||||
{
|
||||
idx_t left; /* bytes left */
|
||||
char *more; /* pointer to next byte to read */
|
||||
|
||||
more = record_start->buffer + status;
|
||||
left = record_size - status;
|
||||
idx_t left = record_size - status; /* bytes left to read */
|
||||
char *more = (char *) record_start + status; /* address of next read */
|
||||
|
||||
if (left && left % BLOCKSIZE == 0
|
||||
&& (warning_option & WARN_RECORD_SIZE)
|
||||
|
||||
Reference in New Issue
Block a user