external/busybox
修订版 | 6e3fb0a62dc312cf4828eb934ad9bd34a5a1b32c (tree) |
---|---|
时间 | 2020-04-14 08:42:51 |
作者 | Denys Vlasenko <vda.linux@goog...> |
Commiter | Mauro Rossi |
top: move free(prev_hist) out of signal path
It was seen being called recursively on repeated signals,
leading to double free
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
@@ -727,12 +727,6 @@ static void reset_term(void) | ||
727 | 727 | { |
728 | 728 | if (!OPT_BATCH_MODE) |
729 | 729 | tcsetattr_stdin_TCSANOW(&initial_settings); |
730 | - if (ENABLE_FEATURE_CLEAN_UP) { | |
731 | - clearmems(); | |
732 | -# if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE | |
733 | - free(prev_hist); | |
734 | -# endif | |
735 | - } | |
736 | 730 | } |
737 | 731 | |
738 | 732 | static void sig_catcher(int sig) |
@@ -1256,5 +1250,11 @@ int top_main(int argc UNUSED_PARAM, char **argv) | ||
1256 | 1250 | #if ENABLE_FEATURE_USE_TERMIOS |
1257 | 1251 | reset_term(); |
1258 | 1252 | #endif |
1253 | + if (ENABLE_FEATURE_CLEAN_UP) { | |
1254 | + clearmems(); | |
1255 | +#if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE | |
1256 | + free(prev_hist); | |
1257 | +#endif | |
1258 | + } | |
1259 | 1259 | return EXIT_SUCCESS; |
1260 | 1260 | } |