]> granicus.if.org Git - procps-ng/commitdiff
top: In the bye_bye function, replace fputs with the write interface.
authorShaohua Zhan <shaohua.zhan@windriver.com>
Thu, 3 Dec 2020 02:24:09 +0000 (10:24 +0800)
committerShaohua Zhan <shaohua.zhan@windriver.com>
Thu, 18 Mar 2021 07:46:46 +0000 (15:46 +0800)
When top calls malloc, if a signal is received, it will
call sig_endpgm to process the signal. In the bye_bye function, if the
-b option is enable, the Batch variable is set, the fputs function
will calls malloc at the same time. The malloc function is not reentrant, so
it will cause the program to crash.

Signed-off-by: Shaohua Zhan <shaohua.zhan@windriver.com>
top/top.c

index 2ec63573263034ae5fd8ed368f525e7d051d557e..eb620017fbf98c91b128a61f33e44f3244676fcf 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -571,7 +571,9 @@ static void bye_bye (const char *str) {
       fputs(str, stderr);
       exit(EXIT_FAILURE);
    }
-   if (Batch) fputs("\n", stdout);
+   if (Batch) {
+      write(fileno(stdout), "\n", sizeof("\n"));
+   }
    exit(EXIT_SUCCESS);
 } // end: bye_bye