| From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-002 |
| |
| Signed-off-by: Peter Korsgaard <peter@korsgaard.com> |
| |
| BASH PATCH REPORT |
| ================= |
| |
| Bash-Release: 4.4 |
| Patch-ID: bash44-002 |
| |
| Bug-Reported-by: Eric Pruitt <eric.pruitt@gmail.com> |
| Bug-Reference-ID: <20160916055120.GA28272@sinister.codevat.com> |
| Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/msg00015.html |
| |
| Bug-Description: |
| |
| Bash-4.4 warns when discarding NUL bytes in command substitution output |
| instead of silently dropping them. This patch changes the warnings from |
| one per NUL byte encountered to one warning per command substitution. |
| |
| Patch (apply with `patch -p0'): |
| |
| *** a/bash-4.4/subst.c 2016-08-30 16:46:38.000000000 -0400 |
| --- b/subst.c 2016-09-26 10:20:19.000000000 -0400 |
| *************** |
| *** 5932,5935 **** |
| --- 5933,5937 ---- |
| int istring_index, istring_size, c, tflag, skip_ctlesc, skip_ctlnul; |
| ssize_t bufn; |
| + int nullbyte; |
| |
| istring = (char *)NULL; |
| *************** |
| *** 5939,5942 **** |
| --- 5941,5946 ---- |
| skip_ctlesc |= *s == CTLESC, skip_ctlnul |= *s == CTLNUL; |
| |
| + nullbyte = 0; |
| + |
| /* Read the output of the command through the pipe. This may need to be |
| changed to understand multibyte characters in the future. */ |
| *************** |
| *** 5957,5961 **** |
| { |
| #if 1 |
| ! internal_warning ("%s", _("command substitution: ignored null byte in input")); |
| #endif |
| continue; |
| --- 5961,5969 ---- |
| { |
| #if 1 |
| ! if (nullbyte == 0) |
| ! { |
| ! internal_warning ("%s", _("command substitution: ignored null byte in input")); |
| ! nullbyte = 1; |
| ! } |
| #endif |
| continue; |
| *** a/bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
| --- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
| *************** |
| *** 26,30 **** |
| looks for to find the patch level (for the sccs version string). */ |
| |
| ! #define PATCHLEVEL 1 |
| |
| #endif /* _PATCHLEVEL_H_ */ |
| --- 26,30 ---- |
| looks for to find the patch level (for the sccs version string). */ |
| |
| ! #define PATCHLEVEL 2 |
| |
| #endif /* _PATCHLEVEL_H_ */ |