Hello community,

here is the log from the commit of package bash for openSUSE:Factory checked in 
at 2019-09-20 14:45:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bash (Old)
 and      /work/SRC/openSUSE:Factory/.bash.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bash"

Fri Sep 20 14:45:28 2019 rev:157 rq:729452 version:5.0.11

Changes:
--------
--- /work/SRC/openSUSE:Factory/bash/bash.changes        2019-09-07 
11:23:56.466507308 +0200
+++ /work/SRC/openSUSE:Factory/.bash.new.7948/bash.changes      2019-09-20 
14:45:34.106973713 +0200
@@ -1,0 +2,18 @@
+Mon Sep  9 08:06:54 UTC 2019 - Dr. Werner Fink <[email protected]>
+
+- Use new version scheme which now includes patch level as well
+- Add official patch bash50-010
+  * Change posix mode bahviour
+  * Remove patch assignment-preceding-builtin.patch
+- Add official patch bash50-011
+  The conditional command did not perform appropriate quoted null
+  character removal on its arguments, causing syntax errors and
+  attempts to stat invalid pathnames.
+
+-------------------------------------------------------------------
+Wed Sep  4 09:08:53 UTC 2019 - Ludwig Nussel <[email protected]>
+
+- Avoid pulling in bash-doc into every installation. Instead of
+  recommeding it, supplement the documentation pattern.
+
+-------------------------------------------------------------------

Old:
----
  assignment-preceding-builtin.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bash.spec ++++++
--- /var/tmp/diff_new_pack.NcC1oe/_old  2019-09-20 14:45:37.206973096 +0200
+++ /var/tmp/diff_new_pack.NcC1oe/_new  2019-09-20 14:45:37.210973095 +0200
@@ -21,7 +21,9 @@
 
 Name:           bash
 %define         bextend         %nil
-Version:        5.0
+%define         bversion 5.0
+%define         bpatchlvl 11
+Version:        %{bversion}.%{bpatchlvl}
 Release:        0
 Summary:        The GNU Bourne-Again Shell
 License:        GPL-3.0-or-later
@@ -31,11 +33,11 @@
 # bugs which will hit at most this package
 #Recommends:   bash-completion
 Suggests:       command-not-found
-Recommends:     bash-doc = %version
+Suggests:       bash-doc = %version
 Url:            http://www.gnu.org/software/bash/bash.html
 # Git:          http://git.savannah.gnu.org/cgit/bash.git
-Source0:        ftp://ftp.gnu.org/gnu/bash/bash-%{version}%{bextend}.tar.gz
-Source1:        bash-%{version}-patches.tar.bz2
+Source0:        ftp://ftp.gnu.org/gnu/bash/bash-%{bversion}%{bextend}.tar.gz
+Source1:        bash-%{bversion}-patches.tar.bz2
 Source4:        run-tests
 Source5:        dot.bashrc
 Source6:        dot.profile
@@ -46,7 +48,7 @@
 # http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00071.html
 # http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00073.html
 Source9:        bash-4.2-history-myown.dif.bz2
-Patch0:         bash-%{version}.dif
+Patch0:         bash-%{bversion}.dif
 Patch1:         bash-2.03-manual.patch
 Patch2:         bash-4.0-security.patch
 Patch3:         bash-4.3-2.4.4.patch
@@ -72,8 +74,6 @@
 Patch48:        bash-4.3-extra-import-func.patch
 # PATCH-EXTEND-SUSE Allow root to clean file system if filled up
 Patch49:        bash-4.3-pathtemp.patch
-# PATCH-EXTEND-UPSTREAM bash-5.0: problem with variable scoping in posix-mode
-Patch100:       assignment-preceding-builtin.patch
 BuildRequires:  audit-devel
 BuildRequires:  autoconf
 BuildRequires:  bison
@@ -105,6 +105,7 @@
 Summary:        Documentation how to Use the GNU Bourne-Again Shell
 Group:          Documentation/Man
 Provides:       bash:%{_infodir}/bash.info.gz
+Supplements:    packageand(bash:patterns-base-documentation)
 PreReq:         %install_info_prereq
 BuildArch:      noarch
 
@@ -198,9 +199,9 @@
 %else
 echo -e '\033[1m\032[31mShift JIS support disabled\033[m'
 %endif
-%setup -q -n bash-%{version}%{bextend} -b1
+%setup -q -n bash-%{bversion}%{bextend} -b1
 typeset -i level
-for patch in ../bash-%{version}-patches/*; do
+for patch in ../bash-%{bversion}-patches/*; do
     test -e $patch || break
     let level=0 || true
     file=$(lsdiff --files=1 $patch)
@@ -209,7 +210,7 @@
        let level++ || true
     fi
     test -e $file || exit 1
-    sed -ri '/^\*\*\* \.\./{ s@\.\./bash-%{version}[^/]*/@@ }' $patch
+    sed -ri '/^\*\*\* \.\./{ s@\.\./bash-%{bversion}[^/]*/@@ }' $patch
     echo Patch $patch
     patch -s -p$level < $patch
 done
@@ -237,7 +238,6 @@
 %patch48 -b .eif
 %endif
 %patch49 -p0 -b .pthtmp
-%patch100 -p0 -b .posix
 %patch0  -p0 -b .0
 
 # This has to be always the same version as included in the bash its self
@@ -475,9 +475,9 @@
 problems in geting the current cursor position within the
 readline runtime library:
 |
-bash-%{version}> LANG=ja_JP
-bash-%{version}> echo -n "Hello"
-bash-%{version}>
+bash-%{bversion}> LANG=ja_JP
+bash-%{bversion}> echo -n "Hello"
+bash-%{bversion}>
 |
 In other words the prompt overwrites the output of the
 echo comand.  The boolean variable byte-oriented

++++++ bash-4.1-completion.dif ++++++
--- /var/tmp/diff_new_pack.NcC1oe/_old  2019-09-20 14:45:37.258973085 +0200
+++ /var/tmp/diff_new_pack.NcC1oe/_new  2019-09-20 14:45:37.258973085 +0200
@@ -4,7 +4,7 @@
 
 --- bashline.c
 +++ bashline.c 2018-11-29 08:12:25.876588305 +0000
-@@ -2045,6 +2045,13 @@ globword:
+@@ -2046,6 +2046,13 @@ globword:
            return ((char *)NULL);
        }
  

++++++ bash-5.0-patches.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bash-5.0-patches/bash50-008 
new/bash-5.0-patches/bash50-008
--- old/bash-5.0-patches/bash50-008     2019-08-14 20:49:28.000000000 +0200
+++ new/bash-5.0-patches/bash50-008     2019-08-15 15:46:07.348536183 +0200
@@ -16,7 +16,7 @@
 
 Patch (apply with `patch -p0'):
 
-*** ../bash-5.0-patched/bashhist.c     2018-07-05 22:41:14.000000000 -0400
+*** bashhist.c 2018-07-05 22:41:14.000000000 -0400
 --- bashhist.c 2019-02-20 16:20:04.000000000 -0500
 ***************
 *** 561,573 ****
@@ -51,7 +51,7 @@
   
         if (expanded)
 
-*** ../bash-5.0/patchlevel.h   2016-06-22 14:51:03.000000000 -0400
+*** patchlevel.h       2016-06-22 14:51:03.000000000 -0400
 --- patchlevel.h       2016-10-01 11:01:28.000000000 -0400
 ***************
 *** 26,30 ****
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bash-5.0-patches/bash50-009 
new/bash-5.0-patches/bash50-009
--- old/bash-5.0-patches/bash50-009     2019-08-14 20:49:39.000000000 +0200
+++ new/bash-5.0-patches/bash50-009     2019-08-15 15:46:07.360535961 +0200
@@ -15,7 +15,7 @@
 
 Patch (apply with `patch -p0'):
 
-*** ../bash-5.0-patched/lib/readline/histfile.c        2018-06-11 
09:14:52.000000000 -0400
+*** lib/readline/histfile.c    2018-06-11 09:14:52.000000000 -0400
 --- lib/readline/histfile.c    2019-05-16 15:55:57.000000000 -0400
 ***************
 *** 306,309 ****
@@ -25,7 +25,7 @@
 +       close (file);
         return 0;      /* don't waste time if we don't have to */
       }
-*** ../bash-5.0/patchlevel.h   2016-06-22 14:51:03.000000000 -0400
+*** patchlevel.h       2016-06-22 14:51:03.000000000 -0400
 --- patchlevel.h       2016-10-01 11:01:28.000000000 -0400
 ***************
 *** 26,30 ****
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bash-5.0-patches/bash50-010 
new/bash-5.0-patches/bash50-010
--- old/bash-5.0-patches/bash50-010     1970-01-01 01:00:00.000000000 +0100
+++ new/bash-5.0-patches/bash50-010     2019-08-29 17:10:00.000000000 +0200
@@ -0,0 +1,172 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  5.0
+Patch-ID:      bash50-010
+
+Bug-Reported-by:       Thorsten Glaser <[email protected]>
+Bug-Reference-ID:      
<156622962831.19438.16374961114836556294.report...@tglase.lan.tarent.de>
+Bug-Reference-URL:     https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=935115
+
+Bug-Description:
+
+Bash-5.0 changed the way assignment statements preceding special builtins
+and shell functions were handled in posix mode. They automatically created
+or modified global variables instead of modifying existing local variables
+as in bash-4.4.
+
+The bash-4.4 posix-mode semantics were buggy, and resulted in creating
+local variables where they were not intended and modifying global variables
+and local variables simultaneously.
+
+The bash-5.0 changes were intended to fix this issue, but did not preserve
+enough backwards compatibility. The posix standard also changed what it
+required in these cases, so bash-5.0 is not bound by the strict conformance
+requirements that existed in previous issues of the standard.
+
+This patch modifies the bash-5.0 posix mode behavior in an effort to restore
+some backwards compatibility and rationalize the behavior in the presence of
+local variables. It
+
+1. Changes the assignment semantics to be more similar to standalone assignment
+   statements: assignments preceding a function call or special builtin while
+   executing in a shell function will modify the value of a local variable
+   with the same name for the duration of the function's execution;
+
+2. Changes assignments preceding shell function calls or special builtins
+   from within a shell function to no longer create or modify global variables
+   in the presence of a local variable with the same name;
+
+3. Assignment statements preceding a shell function call or special builtin
+   at the global scope continue to modify the (global) calling environment,
+   but are unaffected by assignments preceding function calls or special
+   builtins within a function, as described in item 2. This is also similar
+   to the behavior of a standalone assignment statement.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.0-patched/variables.c    2018-12-18 11:07:21.000000000 -0500
+--- variables.c        2019-08-22 10:53:44.000000000 -0400
+***************
+*** 4461,4467 ****
+  
+  /* Take a variable from an assignment statement preceding a posix special
+!    builtin (including `return') and create a global variable from it. This
+!    is called from merge_temporary_env, which is only called when in posix
+!    mode. */
+  static void
+  push_posix_temp_var (data)
+--- 4461,4467 ----
+  
+  /* Take a variable from an assignment statement preceding a posix special
+!    builtin (including `return') and create a variable from it as if a
+!    standalone assignment statement had been performed. This is called from
+!    merge_temporary_env, which is only called when in posix mode. */
+  static void
+  push_posix_temp_var (data)
+***************
+*** 4473,4486 ****
+    var = (SHELL_VAR *)data;
+  
+!   binding_table = global_variables->table;
+!   if (binding_table == 0)
+!     binding_table = global_variables->table = hash_create 
(VARIABLES_HASH_BUCKETS);
+! 
+!   v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 
ASS_FORCE|ASS_NOLONGJMP);
+  
+    /* global variables are no longer temporary and don't need propagating. */
+!   var->attributes &= ~(att_tempvar|att_propagate);
+    if (v)
+!     v->attributes |= var->attributes;
+  
+    if (find_special_var (var->name) >= 0)
+--- 4473,4497 ----
+    var = (SHELL_VAR *)data;
+  
+!   /* Just like do_assignment_internal(). This makes assignments preceding
+!      special builtins act like standalone assignment statements when in
+!      posix mode, satisfying the posix requirement that this affect the
+!      "current execution environment." */
+!   v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP);
+! 
+!   /* If this modifies an existing local variable, v->context will be 
non-zero.
+!      If it comes back with v->context == 0, we bound at the global context.
+!      Set binding_table appropriately. It doesn't matter whether it's correct
+!      if the variable is local, only that it's not global_variables->table */
+!   binding_table = v->context ? shell_variables->table : 
global_variables->table;
+  
+    /* global variables are no longer temporary and don't need propagating. */
+!   if (binding_table == global_variables->table)
+!     var->attributes &= ~(att_tempvar|att_propagate);
+! 
+    if (v)
+!     {
+!       v->attributes |= var->attributes;
+!       v->attributes &= ~att_tempvar; /* not a temp var now */
+!     }
+  
+    if (find_special_var (var->name) >= 0)
+***************
+*** 4576,4587 ****
+  {
+    int i;
+  
+    tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
+    tempvar_list[tvlist_ind = 0] = 0;
+!     
+!   hash_flush (temporary_env, pushf);
+!   hash_dispose (temporary_env);
+    temporary_env = (HASH_TABLE *)NULL;
+  
+    tempvar_list[tvlist_ind] = 0;
+  
+--- 4587,4601 ----
+  {
+    int i;
++   HASH_TABLE *disposer;
+  
+    tempvar_list = strvec_create (HASH_ENTRIES (temporary_env) + 1);
+    tempvar_list[tvlist_ind = 0] = 0;
+! 
+!   disposer = temporary_env;
+    temporary_env = (HASH_TABLE *)NULL;
+  
++   hash_flush (disposer, pushf);
++   hash_dispose (disposer);
++ 
+    tempvar_list[tvlist_ind] = 0;
+  
+*** ../bash-5.0-patched/tests/varenv.right     2018-12-17 15:39:48.000000000 
-0500
+--- tests/varenv.right 2019-08-22 16:05:25.000000000 -0400
+***************
+*** 147,153 ****
+  outside: declare -- var="one"
+  inside: declare -x var="value"
+! outside: declare -x var="value"
+! inside: declare -- var="local"
+! outside: declare -x var="global"
+  foo=<unset> environment foo=
+  foo=foo environment foo=foo
+--- 147,153 ----
+  outside: declare -- var="one"
+  inside: declare -x var="value"
+! outside: declare -- var="outside"
+! inside: declare -x var="global"
+! outside: declare -- var="outside"
+  foo=<unset> environment foo=
+  foo=foo environment foo=foo
+*** ../bash-5.0/patchlevel.h   2016-06-22 14:51:03.000000000 -0400
+--- 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 9
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 10
+  
+  #endif /* _PATCHLEVEL_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bash-5.0-patches/bash50-011 
new/bash-5.0-patches/bash50-011
--- old/bash-5.0-patches/bash50-011     1970-01-01 01:00:00.000000000 +0100
+++ new/bash-5.0-patches/bash50-011     2019-08-29 17:10:10.000000000 +0200
@@ -0,0 +1,59 @@
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  5.0
+Patch-ID:      bash50-011
+
+Bug-Reported-by:       Matt Whitlock
+Bug-Reference-ID:      
+Bug-Reference-URL:     https://savannah.gnu.org/support/?109671
+
+Bug-Description:
+
+The conditional command did not perform appropriate quoted null character
+removal on its arguments, causing syntax errors and attempts to stat
+invalid pathnames.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-5.0-patched/subst.c        2018-12-22 17:43:37.000000000 -0500
+--- subst.c    2019-04-14 13:25:41.000000000 -0400
+***************
+*** 3626,3630 ****
+     SPECIAL is 2, this is an rhs argument for the =~ operator, and should
+     be quoted appropriately for regcomp/regexec.  The caller is responsible
+!    for removing the backslashes if the unquoted word is needed later. */   
+  char *
+  cond_expand_word (w, special)
+--- 3642,3648 ----
+     SPECIAL is 2, this is an rhs argument for the =~ operator, and should
+     be quoted appropriately for regcomp/regexec.  The caller is responsible
+!    for removing the backslashes if the unquoted word is needed later. In
+!    any case, since we don't perform word splitting, we need to do quoted
+!    null character removal. */
+  char *
+  cond_expand_word (w, special)
+***************
+*** 3647,3650 ****
+--- 3665,3670 ----
+        if (special == 0)                      /* LHS */
+       {
++        if (l->word)
++          word_list_remove_quoted_nulls (l);
+         dequote_list (l);
+         r = string_list (l);
+*** ../bash-5.0/patchlevel.h   2016-06-22 14:51:03.000000000 -0400
+--- 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 10
+  
+  #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+     looks for to find the patch level (for the sccs version string). */
+  
+! #define PATCHLEVEL 11
+  
+  #endif /* _PATCHLEVEL_H_ */


Reply via email to