From ff99414a0856e7e9e022b9fd7da0765038b06a27 Mon Sep 17 00:00:00 2001 From: panxiaohe Date: Mon, 15 Aug 2022 10:48:02 +0800 Subject: [PATCH] fix bugfix-Forbidden-non-root-user-to-clear-history.patch --- bash-5.1-sw.patch | 0 bash.spec | 7 ++- ...idden-non-root-user-to-clear-history.patch | 59 ++++++++++++++++--- 3 files changed, 56 insertions(+), 10 deletions(-) mode change 100755 => 100644 bash-5.1-sw.patch diff --git a/bash-5.1-sw.patch b/bash-5.1-sw.patch old mode 100755 new mode 100644 diff --git a/bash.spec b/bash.spec index ec87870..df4493a 100644 --- a/bash.spec +++ b/bash.spec @@ -1,6 +1,6 @@ Name: bash Version: 5.1.8 -Release: 2 +Release: 4 Summary: It is the Bourne Again Shell License: GPLv3 URL: https://www.gnu.org/software/bash @@ -117,7 +117,10 @@ make check %exclude %{_infodir}/dir %changelog -* Wed Jul 20 2022 wuzx - 5.1.8-2 +* Mon Aug 15 2022 panxiaohe - 5.1.8-4 +- fix bugfix-Forbidden-non-root-user-to-clear-history.patch + +* Wed Jul 20 2022 wuzx - 5.1.8-3 - add sw64 patch * Wed Jul 6 2022 zoulin - 5.1.8-2 diff --git a/bugfix-Forbidden-non-root-user-to-clear-history.patch b/bugfix-Forbidden-non-root-user-to-clear-history.patch index 932e20c..7c97f4d 100644 --- a/bugfix-Forbidden-non-root-user-to-clear-history.patch +++ b/bugfix-Forbidden-non-root-user-to-clear-history.patch @@ -4,23 +4,66 @@ Date: Mon, 2 Sep 2019 22:30:32 -0400 Subject: [PATCH] bugfix-Forbidden-non-root-user-to-clear-history --- - lib/readline/history.c | 4 ++++ - 1 file changed, 4 insertions(+) + bashhist.c | 5 +++-- + lib/readline/history.c | 8 +++++++- + lib/readline/history.h | 2 +- + 3 files changed, 11 insertions(+), 4 deletions(-) +diff --git a/bashhist.c b/bashhist.c +index d2155dc..e61bde6 100644 +--- a/bashhist.c ++++ b/bashhist.c +@@ -345,8 +345,9 @@ load_history () + void + bash_clear_history () + { +- clear_history (); +- history_lines_this_session = 0; ++ int ret = clear_history (); ++ if (ret == 0) ++ history_lines_this_session = 0; + /* XXX - reset history_lines_read_from_file? */ + } + diff --git a/lib/readline/history.c b/lib/readline/history.c -index 67158b1..8bc6a00 100644 +index 67158b1..3c1652b 100644 --- a/lib/readline/history.c +++ b/lib/readline/history.c -@@ -594,6 +594,10 @@ void +@@ -590,9 +590,14 @@ history_is_stifled (void) + return (history_stifled); + } + +-void ++int clear_history (void) { - register int i; + uid_t uid = getuid(); + + if (uid) -+ return; ++ return 1; ++ + register int i; /* This loses because we cannot free the data. */ - for (i = 0; i < history_length; i++) +@@ -604,4 +609,5 @@ clear_history (void) + + history_offset = history_length = 0; + history_base = 1; /* reset history base to default */ ++ return 0; + } +diff --git a/lib/readline/history.h b/lib/readline/history.h +index cc3de29..78f8f52 100644 +--- a/lib/readline/history.h ++++ b/lib/readline/history.h +@@ -110,7 +110,7 @@ extern histdata_t free_history_entry PARAMS((HIST_ENTRY *)); + extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t)); + + /* Clear the history list and start over. */ +-extern void clear_history PARAMS((void)); ++extern int clear_history PARAMS((void)); + + /* Stifle the history list, remembering only MAX number of entries. */ + extern void stifle_history PARAMS((int)); -- -2.19.1 +2.27.0 + -- Gitee