From 0bf15c004db6a3342703a3c420a5692e376c457d Mon Sep 17 00:00:00 2001 From: Shaohua Zhan Date: Thu, 3 Dec 2020 10:24:09 +0800 Subject: [PATCH] top: In the bye_bye function, replace fputs with the write interface. 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 --- top/top.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/top/top.c b/top/top.c index 2ec63573..eb620017 100644 --- 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 -- 2.40.0