31 lines
1.1 KiB
Diff
31 lines
1.1 KiB
Diff
From ac6b8d8224de140f5a6f2ca66e6ce279604a37e6 Mon Sep 17 00:00:00 2001
|
||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||
Date: Sat, 6 Apr 2024 15:15:04 -0700
|
||
Subject: [PATCH] =?UTF-8?q?dd:=20don=E2=80=99t=20trust=20st=5Fsize=20on=20?=
|
||
=?UTF-8?q?/proc/files?=
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
* src/dd.c (skip): Don’t trust st_size == 0
|
||
---
|
||
src/dd.c | 2 +-
|
||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
||
diff --git a/src/dd.c b/src/dd.c
|
||
index b50b841..a582111 100644
|
||
--- a/src/dd.c
|
||
+++ b/src/dd.c
|
||
@@ -1813,7 +1813,7 @@ skip (int fdesc, char const *file, intmax_t records, idx_t blocksize,
|
||
struct stat st;
|
||
if (ifstat (STDIN_FILENO, &st) != 0)
|
||
error (EXIT_FAILURE, errno, _("cannot fstat %s"), quoteaf (file));
|
||
- if (usable_st_size (&st) && 0 <= input_offset
|
||
+ if (usable_st_size (&st) && 0 < st.st_size && 0 <= input_offset
|
||
&& st.st_size - input_offset < offset)
|
||
{
|
||
/* When skipping past EOF, return the number of _full_ blocks
|
||
--
|
||
2.27.0
|
||
|