rcolebaugh / rpms / bash

Forked from rpms/bash a year ago
Clone
Petr Šabata 33fc6c
From 01323582f773ef4d08fa26a90e9a21285a8405f5 Mon Sep 17 00:00:00 2001
Petr Šabata 33fc6c
From: Chet Ramey <chet.ramey@case.edu>
Petr Šabata 33fc6c
Date: Wed, 14 Aug 2019 14:57:48 -0400
Petr Šabata 33fc6c
Subject: [PATCH] Bash-5.0 patch 8: fix history offset when HISTSIZE == 0 that
Petr Šabata 33fc6c
 can lead to crashes
Petr Šabata 33fc6c
Petr Šabata 33fc6c
---
Petr Šabata 33fc6c
 bashhist.c   | 5 ++++-
Petr Šabata 33fc6c
 patchlevel.h | 2 +-
Petr Šabata 33fc6c
 2 files changed, 5 insertions(+), 2 deletions(-)
Petr Šabata 33fc6c
Petr Šabata 33fc6c
diff --git a/bashhist.c b/bashhist.c
Petr Šabata 33fc6c
index 7912cce3..d2155dce 100644
Petr Šabata 33fc6c
--- a/bashhist.c
Petr Šabata 33fc6c
+++ b/bashhist.c
Petr Šabata 33fc6c
@@ -560,15 +560,18 @@ pre_process_line (line, print_changes, addit)
Petr Šabata 33fc6c
      add that line to the history if ADDIT is non-zero. */
Petr Šabata 33fc6c
   if (!history_expansion_inhibited && history_expansion && history_expansion_p (line))
Petr Šabata 33fc6c
     {
Petr Šabata 33fc6c
+      int old_len;
Petr Šabata 33fc6c
+
Petr Šabata 33fc6c
       /* If we are expanding the second or later line of a multi-line
Petr Šabata 33fc6c
 	 command, decrease history_length so references to history expansions
Petr Šabata 33fc6c
 	 in these lines refer to the previous history entry and not the
Petr Šabata 33fc6c
 	 current command. */
Petr Šabata 33fc6c
+      old_len = history_length;
Petr Šabata 33fc6c
       if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
Petr Šabata 33fc6c
         history_length--;
Petr Šabata 33fc6c
       expanded = history_expand (line, &history_value);
Petr Šabata 33fc6c
       if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
Petr Šabata 33fc6c
-        history_length++;
Petr Šabata 33fc6c
+        history_length = old_len;
Petr Šabata 33fc6c
 
Petr Šabata 33fc6c
       if (expanded)
Petr Šabata 33fc6c
 	{
Petr Šabata 33fc6c
diff --git a/patchlevel.h b/patchlevel.h
Petr Šabata 33fc6c
index deb9c5b7..16c87404 100644
Petr Šabata 33fc6c
--- a/patchlevel.h
Petr Šabata 33fc6c
+++ b/patchlevel.h
Petr Šabata 33fc6c
@@ -25,6 +25,6 @@
Petr Šabata 33fc6c
    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
Petr Šabata 33fc6c
    looks for to find the patch level (for the sccs version string). */
Petr Šabata 33fc6c
 
Petr Šabata 33fc6c
-#define PATCHLEVEL 7
Petr Šabata 33fc6c
+#define PATCHLEVEL 8
Petr Šabata 33fc6c
 
Petr Šabata 33fc6c
 #endif /* _PATCHLEVEL_H_ */
Petr Šabata 33fc6c
-- 
Petr Šabata 33fc6c
2.21.0
Petr Šabata 33fc6c