From d7791607adfda880ecb7c2cd62df50f6bcc2691f Mon Sep 17 00:00:00 2001 From: Craig Small Date: Tue, 1 Sep 2015 21:28:07 +1000 Subject: [PATCH] watch: Correctly process [m Remove lib dependency The commit referenced below made the ANSI sequence [m be interpreted as [0m However this change was put in the incorrect place and would reference an undefined pointer, causing a crash. Thanks to Jimmy Theis for the second heads-up. watch doesn't need any libprocps functions so it is no longer linked to them. References: commit a5937e4e943eaf28b378a318566d6968f2b167be https://www.freelists.org/post/procps/watch-crashes-but-its-not-the-latest-commit-fault https://www.freelists.org/post/procps/Segmentation-fault-in-watch-3311 Signed-off-by: Craig Small Ported-by: Jim Warner From original: commit 99fa7f9f57f52afdf648584879f37980731215d5 --- Makefile.am | 2 +- watch.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 38c0438b..fa5ee728 100644 --- a/Makefile.am +++ b/Makefile.am @@ -96,7 +96,7 @@ dist_man_MANS += \ slabtop_SOURCES = slabtop.c lib/strutils.c lib/fileutils.c slabtop_LDADD = $(LDADD) @NCURSES_LIBS@ watch_SOURCES = watch.c lib/strutils.c lib/fileutils.c -watch_LDADD = $(LDADD) @WATCH_NCURSES_LIBS@ +watch_LDADD = @WATCH_NCURSES_LIBS@ top_top_SOURCES = \ top/top.h \ top/top.c \ diff --git a/watch.c b/watch.c index b7dd4412..7b55eee1 100644 --- a/watch.c +++ b/watch.c @@ -227,10 +227,12 @@ static void process_ansi(FILE * fp) * attributes to apply, but typically there are between 1 and 3. */ - if (*endptr == '\0') set_ansi_attribute(0); /* [m treated as [0m */ - for (endptr = numstart = buf; *endptr != '\0'; numstart = endptr + 1) + for (endptr = numstart = buf; *endptr != '\0'; numstart = endptr + 1) { set_ansi_attribute(strtol(numstart, &endptr, 10)); + if (numstart == endptr) + set_ansi_attribute(0); /* [m treated as [0m */ + } } static void __attribute__ ((__noreturn__)) do_exit(int status)