bash: Update to version 5.1.016

Message ID 20220206123813.3456391-1-adolf.belka@ipfire.org
State Accepted
Commit d675dade610de4407a0f4ced54564d7c30f7580e
Headers
Series bash: Update to version 5.1.016 |

Commit Message

Adolf Belka Feb. 6, 2022, 12:38 p.m. UTC
  - Update from 5.1.012 to 5.1.016
- Update of rootfile not required
- Changelog
   Patch 013 - Bash did not always perform tilde expansion following an unquoted colon on
               the rhs of an assignment statement in posix mode.
   Patch 014 - Bash may produce corrupted input if a multibyte character spans a 512-byte
               boundary while reading the output of a command substitution.
   Patch 015 - There are some characters (e.g., cyrillic) that can't be displayed using
               certain single-byte encodings (e.g., cp1251) because the negative signed
               int is interpreted as EOF and not displayed.
   Patch 016 - Multiple `!' tokens should toggle negation of an expression in a [[
               conditional command, instead of simply negating the expression.

Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
---
 lfs/bash                    |  2 +-
 src/patches/bash/bash51-013 | 43 +++++++++++++++++++++++++
 src/patches/bash/bash51-014 | 48 ++++++++++++++++++++++++++++
 src/patches/bash/bash51-015 | 49 ++++++++++++++++++++++++++++
 src/patches/bash/bash51-016 | 64 +++++++++++++++++++++++++++++++++++++
 5 files changed, 205 insertions(+), 1 deletion(-)
 create mode 100644 src/patches/bash/bash51-013
 create mode 100644 src/patches/bash/bash51-014
 create mode 100644 src/patches/bash/bash51-015
 create mode 100644 src/patches/bash/bash51-016
  

Comments

Peter Müller Feb. 6, 2022, 4:55 p.m. UTC | #1
Reviewed-by: Peter Müller <peter.mueller@ipfire.org>

> - Update from 5.1.012 to 5.1.016
> - Update of rootfile not required
> - Changelog
>    Patch 013 - Bash did not always perform tilde expansion following an unquoted colon on
>                the rhs of an assignment statement in posix mode.
>    Patch 014 - Bash may produce corrupted input if a multibyte character spans a 512-byte
>                boundary while reading the output of a command substitution.
>    Patch 015 - There are some characters (e.g., cyrillic) that can't be displayed using
>                certain single-byte encodings (e.g., cp1251) because the negative signed
>                int is interpreted as EOF and not displayed.
>    Patch 016 - Multiple `!' tokens should toggle negation of an expression in a [[
>                conditional command, instead of simply negating the expression.
> 
> Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
> ---
>  lfs/bash                    |  2 +-
>  src/patches/bash/bash51-013 | 43 +++++++++++++++++++++++++
>  src/patches/bash/bash51-014 | 48 ++++++++++++++++++++++++++++
>  src/patches/bash/bash51-015 | 49 ++++++++++++++++++++++++++++
>  src/patches/bash/bash51-016 | 64 +++++++++++++++++++++++++++++++++++++
>  5 files changed, 205 insertions(+), 1 deletion(-)
>  create mode 100644 src/patches/bash/bash51-013
>  create mode 100644 src/patches/bash/bash51-014
>  create mode 100644 src/patches/bash/bash51-015
>  create mode 100644 src/patches/bash/bash51-016
> 
> diff --git a/lfs/bash b/lfs/bash
> index 1bf3eb2ec..4ec4be02a 100644
> --- a/lfs/bash
> +++ b/lfs/bash
> @@ -87,7 +87,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
>  	sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \
>  		-i $(DIR_APP)/builtins/enable.def
>  
> -	for i in $$(seq 9 12); do \
> +	for i in $$(seq 9 16); do \
>  		cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash51-$$(printf "%03d" "$${i}") || exit 1; \
>  	done
>  
> diff --git a/src/patches/bash/bash51-013 b/src/patches/bash/bash51-013
> new file mode 100644
> index 000000000..f2413a58d
> --- /dev/null
> +++ b/src/patches/bash/bash51-013
> @@ -0,0 +1,43 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	5.1
> +Patch-ID:	bash51-013
> +
> +Bug-Reported-by:	Anders Kaseorg <andersk@mit.edu>
> +Bug-Reference-ID:	<de65540274064d7b95f17e9c46a3a6d8@oc11expo7.exchange.mit.edu>
> +Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2021-11/msg00025.html
> +
> +Bug-Description:
> +
> +Bash did not always perform tilde expansion following an unquoted colon on
> +the rhs of an assignment statement in posix mode.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-20211028/subst.c	2021-10-18 16:09:58.000000000 -0400
> +--- subst.c	2021-11-30 11:19:47.000000000 -0500
> +***************
> +*** 3826,3829 ****
> +--- 3826,3830 ----
> +    td.flags = W_ASSIGNRHS;
> +  #endif
> ++   td.flags |= (W_NOGLOB|W_TILDEEXP);
> +    td.word = savestring (string);
> +    value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
> +
> +*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
> +***************
> +*** 26,30 ****
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 12
> +  
> +  #endif /* _PATCHLEVEL_H_ */
> +--- 26,30 ----
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 13
> +  
> +  #endif /* _PATCHLEVEL_H_ */
> diff --git a/src/patches/bash/bash51-014 b/src/patches/bash/bash51-014
> new file mode 100644
> index 000000000..cd8df23ab
> --- /dev/null
> +++ b/src/patches/bash/bash51-014
> @@ -0,0 +1,48 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	5.1
> +Patch-ID:	bash51-014
> +
> +Bug-Reported-by:	platon7pronko@gmail.com
> +Bug-Reference-ID:
> +Bug-Reference-URL:	https://savannah.gnu.org/patch/?10035
> +
> +Bug-Description:
> +
> +Bash may produce corrupted input if a multibyte character spans a 512-byte
> +boundary while reading the output of a command substitution.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-20210217/subst.c	2021-02-03 10:32:08.000000000 -0500
> +--- subst.c	2021-03-01 16:47:52.000000000 -0500
> +***************
> +*** 6243,6247 ****
> +  	  /* punt on the hard case for now */
> +  	  memset (&ps, '\0', sizeof (mbstate_t));
> +! 	  mblen = mbrtowc (&wc, bufp-1, bufn+1, &ps);
> +  	  if (MB_INVALIDCH (mblen) || mblen == 0 || mblen == 1)
> +  	    istring[istring_index++] = c;
> +--- 6243,6247 ----
> +  	  /* punt on the hard case for now */
> +  	  memset (&ps, '\0', sizeof (mbstate_t));
> +! 	  mblen = mbrtowc (&wc, bufp-1, bufn, &ps);
> +  	  if (MB_INVALIDCH (mblen) || mblen == 0 || mblen == 1)
> +  	    istring[istring_index++] = c;
> +
> +*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
> +***************
> +*** 26,30 ****
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 13
> +  
> +  #endif /* _PATCHLEVEL_H_ */
> +--- 26,30 ----
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 14
> +  
> +  #endif /* _PATCHLEVEL_H_ */
> diff --git a/src/patches/bash/bash51-015 b/src/patches/bash/bash51-015
> new file mode 100644
> index 000000000..5ae65811a
> --- /dev/null
> +++ b/src/patches/bash/bash51-015
> @@ -0,0 +1,49 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	5.1
> +Patch-ID:	bash51-015
> +
> +Bug-Reported-by:	Volodymyr Prodan <vovcat@gmail.com>
> +Bug-Reference-ID:
> +Bug-Reference-URL:	https://savannah.gnu.org/patch/?10076
> +
> +Bug-Description:
> +
> +Patch (apply with `patch -p0'):
> +
> +There are some characters (e.g., cyrillic) that can't be displayed using
> +certain single-byte encodings (e.g., cp1251) because the negative signed
> +int is interpreted as EOF and not displayed.
> +
> +*** ../bash-20210524/lib/readline/display.c	2021-03-16 18:12:20.000000000 -0400
> +--- lib/readline/display.c	2021-06-07 16:53:08.000000000 -0400
> +***************
> +*** 1599,1603 ****
> +  
> +    for (cur_face = FACE_NORMAL, i = 0; i < n; i++)
> +!     putc_face (str[i], face[i], &cur_face);
> +    putc_face (EOF, FACE_NORMAL, &cur_face);
> +  }
> +--- 1599,1603 ----
> +  
> +    for (cur_face = FACE_NORMAL, i = 0; i < n; i++)
> +!     putc_face ((unsigned char) str[i], face[i], &cur_face);
> +    putc_face (EOF, FACE_NORMAL, &cur_face);
> +  }
> +
> +*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
> +***************
> +*** 26,30 ****
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 14
> +  
> +  #endif /* _PATCHLEVEL_H_ */
> +--- 26,30 ----
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 15
> +  
> +  #endif /* _PATCHLEVEL_H_ */
> diff --git a/src/patches/bash/bash51-016 b/src/patches/bash/bash51-016
> new file mode 100644
> index 000000000..4694498b2
> --- /dev/null
> +++ b/src/patches/bash/bash51-016
> @@ -0,0 +1,64 @@
> +			     BASH PATCH REPORT
> +			     =================
> +
> +Bash-Release:	5.1
> +Patch-ID:	bash51-016
> +
> +Bug-Reported-by:	Vincent Menegaux <vincent.menegaux@gmail.com>
> +Bug-Reference-ID:
> +Bug-Reference-URL:	https://savannah.gnu.org/patch/?10070
> +
> +Bug-Description:
> +
> +Multiple `!' tokens should toggle negation of an expression in a [[
> +conditional command, instead of simply negating the expression.
> +
> +Patch (apply with `patch -p0'):
> +
> +*** ../bash-20210515/parse.y	2021-04-21 15:32:50.000000000 -0400
> +--- parse.y	2021-05-24 11:53:30.000000000 -0400
> +***************
> +*** 4797,4801 ****
> +        term = cond_term ();
> +        if (term)
> +! 	term->flags |= CMD_INVERT_RETURN;
> +      }
> +    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
> +--- 4797,4801 ----
> +        term = cond_term ();
> +        if (term)
> +! 	term->flags ^= CMD_INVERT_RETURN;
> +      }
> +    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
> +
> +*** ../bash-20210515/y.tab.c	2021-05-14 15:50:41.000000000 -0400
> +--- y.tab.c	2021-05-24 16:35:55.000000000 -0400
> +***************
> +*** 7091,7095 ****
> +        term = cond_term ();
> +        if (term)
> +! 	term->flags |= CMD_INVERT_RETURN;
> +      }
> +    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
> +--- 7091,7095 ----
> +        term = cond_term ();
> +        if (term)
> +! 	term->flags ^= CMD_INVERT_RETURN;
> +      }
> +    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
> +
> +*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
> +--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
> +***************
> +*** 26,30 ****
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 15
> +  
> +  #endif /* _PATCHLEVEL_H_ */
> +--- 26,30 ----
> +     looks for to find the patch level (for the sccs version string). */
> +  
> +! #define PATCHLEVEL 16
> +  
> +  #endif /* _PATCHLEVEL_H_ */
  

Patch

diff --git a/lfs/bash b/lfs/bash
index 1bf3eb2ec..4ec4be02a 100644
--- a/lfs/bash
+++ b/lfs/bash
@@ -87,7 +87,7 @@  $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	sed -e "s/filename, RTLD_LAZY/filename, RTLD_NOW/" \
 		-i $(DIR_APP)/builtins/enable.def
 
-	for i in $$(seq 9 12); do \
+	for i in $$(seq 9 16); do \
 		cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/bash/bash51-$$(printf "%03d" "$${i}") || exit 1; \
 	done
 
diff --git a/src/patches/bash/bash51-013 b/src/patches/bash/bash51-013
new file mode 100644
index 000000000..f2413a58d
--- /dev/null
+++ b/src/patches/bash/bash51-013
@@ -0,0 +1,43 @@ 
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	5.1
+Patch-ID:	bash51-013
+
+Bug-Reported-by:	Anders Kaseorg <andersk@mit.edu>
+Bug-Reference-ID:	<de65540274064d7b95f17e9c46a3a6d8@oc11expo7.exchange.mit.edu>
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2021-11/msg00025.html
+
+Bug-Description:
+
+Bash did not always perform tilde expansion following an unquoted colon on
+the rhs of an assignment statement in posix mode.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-20211028/subst.c	2021-10-18 16:09:58.000000000 -0400
+--- subst.c	2021-11-30 11:19:47.000000000 -0500
+***************
+*** 3826,3829 ****
+--- 3826,3830 ----
+    td.flags = W_ASSIGNRHS;
+  #endif
++   td.flags |= (W_NOGLOB|W_TILDEEXP);
+    td.word = savestring (string);
+    value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+
+*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 12
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash51-014 b/src/patches/bash/bash51-014
new file mode 100644
index 000000000..cd8df23ab
--- /dev/null
+++ b/src/patches/bash/bash51-014
@@ -0,0 +1,48 @@ 
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	5.1
+Patch-ID:	bash51-014
+
+Bug-Reported-by:	platon7pronko@gmail.com
+Bug-Reference-ID:
+Bug-Reference-URL:	https://savannah.gnu.org/patch/?10035
+
+Bug-Description:
+
+Bash may produce corrupted input if a multibyte character spans a 512-byte
+boundary while reading the output of a command substitution.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-20210217/subst.c	2021-02-03 10:32:08.000000000 -0500
+--- subst.c	2021-03-01 16:47:52.000000000 -0500
+***************
+*** 6243,6247 ****
+  	  /* punt on the hard case for now */
+  	  memset (&ps, '\0', sizeof (mbstate_t));
+! 	  mblen = mbrtowc (&wc, bufp-1, bufn+1, &ps);
+  	  if (MB_INVALIDCH (mblen) || mblen == 0 || mblen == 1)
+  	    istring[istring_index++] = c;
+--- 6243,6247 ----
+  	  /* punt on the hard case for now */
+  	  memset (&ps, '\0', sizeof (mbstate_t));
+! 	  mblen = mbrtowc (&wc, bufp-1, bufn, &ps);
+  	  if (MB_INVALIDCH (mblen) || mblen == 0 || mblen == 1)
+  	    istring[istring_index++] = c;
+
+*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 13
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash51-015 b/src/patches/bash/bash51-015
new file mode 100644
index 000000000..5ae65811a
--- /dev/null
+++ b/src/patches/bash/bash51-015
@@ -0,0 +1,49 @@ 
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	5.1
+Patch-ID:	bash51-015
+
+Bug-Reported-by:	Volodymyr Prodan <vovcat@gmail.com>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://savannah.gnu.org/patch/?10076
+
+Bug-Description:
+
+Patch (apply with `patch -p0'):
+
+There are some characters (e.g., cyrillic) that can't be displayed using
+certain single-byte encodings (e.g., cp1251) because the negative signed
+int is interpreted as EOF and not displayed.
+
+*** ../bash-20210524/lib/readline/display.c	2021-03-16 18:12:20.000000000 -0400
+--- lib/readline/display.c	2021-06-07 16:53:08.000000000 -0400
+***************
+*** 1599,1603 ****
+  
+    for (cur_face = FACE_NORMAL, i = 0; i < n; i++)
+!     putc_face (str[i], face[i], &cur_face);
+    putc_face (EOF, FACE_NORMAL, &cur_face);
+  }
+--- 1599,1603 ----
+  
+    for (cur_face = FACE_NORMAL, i = 0; i < n; i++)
+!     putc_face ((unsigned char) str[i], face[i], &cur_face);
+    putc_face (EOF, FACE_NORMAL, &cur_face);
+  }
+
+*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 14
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
diff --git a/src/patches/bash/bash51-016 b/src/patches/bash/bash51-016
new file mode 100644
index 000000000..4694498b2
--- /dev/null
+++ b/src/patches/bash/bash51-016
@@ -0,0 +1,64 @@ 
+			     BASH PATCH REPORT
+			     =================
+
+Bash-Release:	5.1
+Patch-ID:	bash51-016
+
+Bug-Reported-by:	Vincent Menegaux <vincent.menegaux@gmail.com>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://savannah.gnu.org/patch/?10070
+
+Bug-Description:
+
+Multiple `!' tokens should toggle negation of an expression in a [[
+conditional command, instead of simply negating the expression.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-20210515/parse.y	2021-04-21 15:32:50.000000000 -0400
+--- parse.y	2021-05-24 11:53:30.000000000 -0400
+***************
+*** 4797,4801 ****
+        term = cond_term ();
+        if (term)
+! 	term->flags |= CMD_INVERT_RETURN;
+      }
+    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
+--- 4797,4801 ----
+        term = cond_term ();
+        if (term)
+! 	term->flags ^= CMD_INVERT_RETURN;
+      }
+    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
+
+*** ../bash-20210515/y.tab.c	2021-05-14 15:50:41.000000000 -0400
+--- y.tab.c	2021-05-24 16:35:55.000000000 -0400
+***************
+*** 7091,7095 ****
+        term = cond_term ();
+        if (term)
+! 	term->flags |= CMD_INVERT_RETURN;
+      }
+    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
+--- 7091,7095 ----
+        term = cond_term ();
+        if (term)
+! 	term->flags ^= CMD_INVERT_RETURN;
+      }
+    else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
+
+*** ../bash-5.1/patchlevel.h	2020-06-22 14:51:03.000000000 -0400
+--- patchlevel.h	2020-10-01 11:01:28.000000000 -0400
+***************
+*** 26,30 ****
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 15
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 16
+  
+  #endif /* _PATCHLEVEL_H_ */