Bash-5.0 patch 8: fix history offset when HISTSIZE == 0 that can lead to crashes
This commit is contained in:
@@ -560,15 +560,18 @@ pre_process_line (line, print_changes, addit)
|
|||||||
add that line to the history if ADDIT is non-zero. */
|
add that line to the history if ADDIT is non-zero. */
|
||||||
if (!history_expansion_inhibited && history_expansion && history_expansion_p (line))
|
if (!history_expansion_inhibited && history_expansion && history_expansion_p (line))
|
||||||
{
|
{
|
||||||
|
int old_len;
|
||||||
|
|
||||||
/* If we are expanding the second or later line of a multi-line
|
/* If we are expanding the second or later line of a multi-line
|
||||||
command, decrease history_length so references to history expansions
|
command, decrease history_length so references to history expansions
|
||||||
in these lines refer to the previous history entry and not the
|
in these lines refer to the previous history entry and not the
|
||||||
current command. */
|
current command. */
|
||||||
|
old_len = history_length;
|
||||||
if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
|
if (history_length > 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
|
||||||
history_length--;
|
history_length--;
|
||||||
expanded = history_expand (line, &history_value);
|
expanded = history_expand (line, &history_value);
|
||||||
if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
|
if (history_length >= 0 && command_oriented_history && current_command_first_line_saved && current_command_line_count > 1)
|
||||||
history_length++;
|
history_length = old_len;
|
||||||
|
|
||||||
if (expanded)
|
if (expanded)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,6 +25,6 @@
|
|||||||
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
|
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
|
||||||
looks for to find the patch level (for the sccs version string). */
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
#define PATCHLEVEL 7
|
#define PATCHLEVEL 8
|
||||||
|
|
||||||
#endif /* _PATCHLEVEL_H_ */
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user