components/bash/patches/bash43-014.patch
author zihao.zhu@oracle.com <zihao.zhu@oracle.com>
Tue, 18 Oct 2016 14:50:09 -0700
changeset 7123 b650e07ff9f6
parent 5518 c47fe0edc204
permissions -rw-r--r--
24750381 python-ldap missing dependencies on pyasn1, pyasn1-modules
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5518
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     1
			     BASH PATCH REPORT
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     2
			     =================
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     3
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
Bash-Release:	4.3
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
Patch-ID:	bash43-014
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
Bug-Reported-by:	Greg Wooledge <[email protected]>
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
Bug-Reference-ID:	<[email protected]>
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
Bug-Reference-URL:	http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
Bug-Description:
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
Under certain circumstances, $@ is expanded incorrectly in contexts where
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
word splitting is not performed.
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
Patch (apply with `patch -p0'):
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
*** ../bash-4.3-patched/subst.c	2014-01-23 16:26:37.000000000 -0500
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
--- subst.c	2014-04-19 15:41:26.000000000 -0400
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
***************
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
*** 3249,3254 ****
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
--- 3249,3256 ----
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    22
      return ((char *)NULL);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
  
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
+   expand_no_split_dollar_star = 1;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    25
    w->flags |= W_NOSPLIT2;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    26
    l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    27
+   expand_no_split_dollar_star = 0;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    28
    if (l)
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    29
      {
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    30
***************
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
*** 7848,7851 ****
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
--- 7850,7857 ----
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
  	 according to POSIX.2, this expands to a list of the positional
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
  	 parameters no matter what IFS is set to. */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
+       /* XXX - what to do when in a context where word splitting is not
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
+ 	 performed? Even when IFS is not the default, posix seems to imply
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    37
+ 	 that we behave like unquoted $* ?  Maybe we should use PF_NOSPLIT2
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    38
+ 	 here. */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    39
        temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    40
  
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    41
***************
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    42
*** 8817,8820 ****
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    43
--- 8823,8827 ----
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    44
      {
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    45
        char *ifs_chars;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    46
+       char *tstring;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    47
  
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    48
        ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    49
***************
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    50
*** 8831,8834 ****
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    51
--- 8838,8865 ----
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    52
        if (split_on_spaces)
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    53
  	list = list_string (istring, " ", 1);	/* XXX quoted == 1? */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    54
+       /* If we have $@ (has_dollar_at != 0) and we are in a context where we
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    55
+ 	 don't want to split the result (W_NOSPLIT2), and we are not quoted,
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    56
+ 	 we have already separated the arguments with the first character of
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    57
+ 	 $IFS.  In this case, we want to return a list with a single word
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    58
+ 	 with the separator possibly replaced with a space (it's what other
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    59
+ 	 shells seem to do).
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    60
+ 	 quoted_dollar_at is internal to this function and is set if we are
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    61
+ 	 passed an argument that is unquoted (quoted == 0) but we encounter a
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    62
+ 	 double-quoted $@ while expanding it. */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    63
+       else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2))
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    64
+ 	{
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    65
+ 	  /* Only split and rejoin if we have to */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    66
+ 	  if (*ifs_chars && *ifs_chars != ' ')
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    67
+ 	    {
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    68
+ 	      list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    69
+ 	      tstring = string_list (list);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    70
+ 	    }
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    71
+ 	  else
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    72
+ 	    tstring = istring;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    73
+ 	  tword = make_bare_word (tstring);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    74
+ 	  if (tstring != istring)
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    75
+ 	    free (tstring);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    76
+ 	  goto set_word_flags;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    77
+ 	}
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    78
        else if (has_dollar_at && ifs_chars)
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    79
  	list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    80
***************
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    81
*** 8836,8839 ****
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    82
--- 8867,8871 ----
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    83
  	{
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    84
  	  tword = make_bare_word (istring);
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    85
+ set_word_flags:
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    86
  	  if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    87
  	    tword->flags |= W_QUOTED;
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    88
*** ../bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    89
--- patchlevel.h	2014-03-20 20:01:28.000000000 -0400
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    90
***************
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    91
*** 26,30 ****
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    92
     looks for to find the patch level (for the sccs version string). */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    93
  
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    94
! #define PATCHLEVEL 13
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    95
  
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    96
  #endif /* _PATCHLEVEL_H_ */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    97
--- 26,30 ----
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    98
     looks for to find the patch level (for the sccs version string). */
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    99
  
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   100
! #define PATCHLEVEL 14
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   101
  
c47fe0edc204 20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
   102
  #endif /* _PATCHLEVEL_H_ */