All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix segmentation fault in tailf on 32 bit
@ 2016-07-10 14:14 Tobias Stoeckmann
  2016-07-14 10:12 ` Karel Zak
  2016-07-19  9:49 ` [PATCH] Fix segmentation fault in tailf on 32 bit Ruediger Meier
  0 siblings, 2 replies; 7+ messages in thread
From: Tobias Stoeckmann @ 2016-07-10 14:14 UTC (permalink / raw)
  To: util-linux

tailf crashes with a segmentation fault when used with a file that is
exactly 4GB in size due to an integer overflow between off_t and size_t:

$ dd if=/dev/zero of=tailf.crash bs=1 count=1 seek=4294967295
$ tailf tailf.crash
Segmentation fault
$ _

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
---
 text-utils/tailf.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/text-utils/tailf.c b/text-utils/tailf.c
index ea082c7..e9ba49b 100644
--- a/text-utils/tailf.c
+++ b/text-utils/tailf.c
@@ -42,6 +42,7 @@
 #include <errno.h>
 #include <getopt.h>
 #include <sys/mman.h>
+#include <limits.h>
 
 #ifdef HAVE_INOTIFY_INIT
 #include <sys/inotify.h>
@@ -55,7 +56,7 @@
 
 #define DEFAULT_LINES  10
 
-/* st->st_size has to be greater than zero! */
+/* st->st_size has to be greater than zero and smaller or equal to SIZE_MAX! */
 static void tailf(const char *filename, size_t lines, struct stat *st)
 {
 	int fd;
@@ -281,7 +282,7 @@ int main(int argc, char **argv)
 		err(EXIT_FAILURE, _("stat of %s failed"), filename);
 	if (!S_ISREG(st.st_mode))
 		errx(EXIT_FAILURE, _("%s: is not a file"), filename);
-	if (st.st_size)
+	if (st.st_size && st.st_size <= SIZE_MAX)
 		tailf(filename, lines, &st);
 
 #ifdef HAVE_INOTIFY_INIT
-- 
2.9.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-07-19  9:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-10 14:14 [PATCH] Fix segmentation fault in tailf on 32 bit Tobias Stoeckmann
2016-07-14 10:12 ` Karel Zak
2016-07-14 19:28   ` [PATCH] Fix previously adjusted segfault patch Tobias Stoeckmann
2016-07-15 11:16     ` Karel Zak
2016-07-16 10:51       ` Tobias Stoeckmann
2016-07-19  9:05         ` Karel Zak
2016-07-19  9:49 ` [PATCH] Fix segmentation fault in tailf on 32 bit Ruediger Meier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.