From 5f91561ae7e08d79b6a5feca167259fd7634713f Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 13 Oct 2009 13:52:59 +0000 Subject: [PATCH] libext2fs: handle <=linux-2.6.19 bug in /proc/swaps Linux <= 2.6.19 contained a bug in the /proc/swaps code where the header would not be displayed (the first line). This issue has been reported by Mike Frysinger for swapon(8). Signed-off-by: Karel Zak Signed-off-by: Theodore Ts'o --- lib/ext2fs/ismounted.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/ext2fs/ismounted.c b/lib/ext2fs/ismounted.c index 5682a8b21..d28b6adaf 100644 --- a/lib/ext2fs/ismounted.c +++ b/lib/ext2fs/ismounted.c @@ -253,8 +253,16 @@ static int is_swap_device(const char *file) if (!(f = fopen("/proc/swaps", "r"))) return 0; /* Skip the first line */ - if (fgets(buf, sizeof(buf), f)) + if (!fgets(buf, sizeof(buf), f)) + goto leave; + if (*buf && strncmp(buf, "Filename\t", 9)) + /* Linux <=2.6.19 contained a bug in the /proc/swaps + * code where the header would not be displayed + */ + goto valid_first_line; + while (fgets(buf, sizeof(buf), f)) { +valid_first_line: if ((cp = strchr(buf, ' ')) != NULL) *cp = 0; if ((cp = strchr(buf, '\t')) != NULL) @@ -272,6 +280,8 @@ static int is_swap_device(const char *file) } #endif /* __GNU__ */ } + +leave: fclose(f); return ret; } -- 2.47.2