git: 302d0acea8a0 - stable/13 - MFV: less: Do not trust st_size if it equals zero

From: Xin LI <delphij_at_FreeBSD.org>
Date: Sat, 27 Apr 2024 07:08:27 UTC
The branch stable/13 has been updated by delphij:

URL: https://cgit.FreeBSD.org/src/commit/?id=302d0acea8a0bc18a26b5e0f1a7870b09dc58d16

commit 302d0acea8a0bc18a26b5e0f1a7870b09dc58d16
Author:     Ricardo Branco <rbranco@suse.de>
AuthorDate: 2024-04-24 05:29:46 +0000
Commit:     Xin LI <delphij@FreeBSD.org>
CommitDate: 2024-04-27 07:08:17 +0000

    MFV: less: Do not trust st_size if it equals zero
    
    This is a smaller version of upstream
    1fafd968b48e5cea6c85f126d77071a8de707a55 to address the
    issue that less not being able to operate on files
    residing in pseudo-filesystems that advertize a zero
    size value.
    
    PR:             bin/276133
    
    (cherry picked from commit cae336280b0d7ad3d49788c5fc0986f91328eb50)
---
 contrib/less/ch.c | 13 ++-----------
 1 file changed, 2 insertions(+), 11 deletions(-)

diff --git a/contrib/less/ch.c b/contrib/less/ch.c
index fd53b2d66e38..51045438a296 100644
--- a/contrib/less/ch.c
+++ b/contrib/less/ch.c
@@ -700,7 +700,6 @@ public void ch_flush(void)
 	ch_block = 0; /* ch_fpos / LBUFSIZE; */
 	ch_offset = 0; /* ch_fpos % LBUFSIZE; */
 
-#if HAVE_PROCFS
 	/*
 	 * This is a kludge to workaround a Linux kernel bug: files in
 	 * /proc have a size of 0 according to fstat() but have readable 
@@ -709,17 +708,9 @@ public void ch_flush(void)
 	 */
 	if (ch_fsize == 0)
 	{
-		struct statfs st;
-		if (fstatfs(ch_file, &st) == 0)
-		{
-			if (st.f_type == PROC_SUPER_MAGIC)
-			{
-				ch_fsize = NULL_POSITION;
-				ch_flags &= ~CH_CANSEEK;
-			}
-		}
+		ch_fsize = NULL_POSITION;
+		ch_flags &= ~CH_CANSEEK;
 	}
-#endif
 
 	if (lseek(ch_file, (off_t)0, SEEK_SET) == BAD_LSEEK)
 	{