From: Craig Small Date: Tue, 1 Sep 2015 11:28:07 +0000 (+1000) Subject: watch: Correctly process [m Remove lib dependency X-Git-Tag: v3.3.12~75 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=99fa7f9f57f52afdf648584879f37980731215d5;p=procps-ng 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 --- diff --git a/Makefile.am b/Makefile.am index f1bd6b98..fe1f12f9 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 de46730c..58b4dbc8 100644 --- a/watch.c +++ b/watch.c @@ -228,10 +228,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)