author | Sean Wilcox <sean.wilcox@oracle.com> |
Tue, 08 Nov 2016 11:16:49 -0700 | |
changeset 7262 | 19860fd7b64f |
parent 5518 | c47fe0edc204 |
permissions | -rw-r--r-- |
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-027 |
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: Florian Weimer <[email protected]> |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
8 |
Bug-Reference-ID: |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
9 |
Bug-Reference-URL: |
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 |
This patch changes the encoding bash uses for exported functions to avoid |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
14 |
clashes with shell variables and to avoid depending only on an environment |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
15 |
variable's contents to determine whether or not to interpret it as a shell |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
16 |
function. |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
17 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
18 |
Patch (apply with `patch -p0'): |
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 |
*** ../bash-4.3.26/variables.c 2014-09-25 23:02:18.000000000 -0400 |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
21 |
--- variables.c 2014-09-27 20:52:04.000000000 -0400 |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
22 |
*************** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
23 |
*** 84,87 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
24 |
--- 84,92 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
25 |
#define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
26 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
27 |
+ #define BASHFUNC_PREFIX "BASH_FUNC_" |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
28 |
+ #define BASHFUNC_PREFLEN 10 /* == strlen(BASHFUNC_PREFIX */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
29 |
+ #define BASHFUNC_SUFFIX "%%" |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
30 |
+ #define BASHFUNC_SUFFLEN 2 /* == strlen(BASHFUNC_SUFFIX) */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
31 |
+ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
32 |
extern char **environ; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
33 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
34 |
*************** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
35 |
*** 280,284 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
36 |
static void dispose_temporary_env __P((sh_free_func_t *)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
37 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
38 |
! static inline char *mk_env_string __P((const char *, const char *)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
39 |
static char **make_env_array_from_var_list __P((SHELL_VAR **)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
40 |
static char **make_var_export_array __P((VAR_CONTEXT *)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
41 |
--- 285,289 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
42 |
static void dispose_temporary_env __P((sh_free_func_t *)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
43 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
44 |
! static inline char *mk_env_string __P((const char *, const char *, int)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
45 |
static char **make_env_array_from_var_list __P((SHELL_VAR **)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
46 |
static char **make_var_export_array __P((VAR_CONTEXT *)); |
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 |
*** 350,369 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
49 |
/* If exported function, define it now. Don't import functions from |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
50 |
the environment in privileged mode. */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
51 |
! if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4)) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
52 |
{ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
53 |
string_length = strlen (string); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
54 |
! temp_string = (char *)xmalloc (3 + string_length + char_index); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
55 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
56 |
! strcpy (temp_string, name); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
57 |
! temp_string[char_index] = ' '; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
58 |
! strcpy (temp_string + char_index + 1, string); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
59 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
60 |
/* Don't import function names that are invalid identifiers from the |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
61 |
environment, though we still allow them to be defined as shell |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
62 |
variables. */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
63 |
! if (legal_identifier (name)) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
64 |
! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
65 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
66 |
! if (temp_var = find_function (name)) |
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 |
VSETATTR (temp_var, (att_exported|att_imported)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
69 |
--- 355,385 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
70 |
/* If exported function, define it now. Don't import functions from |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
71 |
the environment in privileged mode. */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
72 |
! if (privmode == 0 && read_but_dont_execute == 0 && |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
73 |
! STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) && |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
74 |
! STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) && |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
75 |
! STREQN ("() {", string, 4)) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
76 |
{ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
77 |
+ size_t namelen; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
78 |
+ char *tname; /* desired imported function name */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
79 |
+ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
80 |
+ namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
81 |
+ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
82 |
+ tname = name + BASHFUNC_PREFLEN; /* start of func name */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
83 |
+ tname[namelen] = '\0'; /* now tname == func name */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
84 |
+ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
85 |
string_length = strlen (string); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
86 |
! temp_string = (char *)xmalloc (namelen + string_length + 2); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
87 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
88 |
! memcpy (temp_string, tname, namelen); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
89 |
! temp_string[namelen] = ' '; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
90 |
! memcpy (temp_string + namelen + 1, string, string_length + 1); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
91 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
92 |
/* Don't import function names that are invalid identifiers from the |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
93 |
environment, though we still allow them to be defined as shell |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
94 |
variables. */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
95 |
! if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname))) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
96 |
! parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
97 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
98 |
! if (temp_var = find_function (tname)) |
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 |
VSETATTR (temp_var, (att_exported|att_imported)); |
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 |
*** 378,383 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
103 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
104 |
last_command_exit_value = 1; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
105 |
! report_error (_("error importing function definition for `%s'"), name); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
106 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
107 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
108 |
#if defined (ARRAY_VARS) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
109 |
--- 394,402 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
110 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
111 |
last_command_exit_value = 1; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
112 |
! report_error (_("error importing function definition for `%s'"), tname); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
113 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
114 |
+ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
115 |
+ /* Restore original suffix */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
116 |
+ tname[namelen] = BASHFUNC_SUFFIX[0]; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
117 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
118 |
#if defined (ARRAY_VARS) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
119 |
*************** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
120 |
*** 2955,2959 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
121 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
122 |
INVALIDATE_EXPORTSTR (var); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
123 |
! var->exportstr = mk_env_string (name, value); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
124 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
125 |
array_needs_making = 1; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
126 |
--- 2974,2978 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
127 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
128 |
INVALIDATE_EXPORTSTR (var); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
129 |
! var->exportstr = mk_env_string (name, value, 0); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
130 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
131 |
array_needs_making = 1; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
132 |
*************** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
133 |
*** 3853,3871 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
134 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
135 |
static inline char * |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
136 |
! mk_env_string (name, value) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
137 |
const char *name, *value; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
138 |
{ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
139 |
! int name_len, value_len; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
140 |
! char *p; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
141 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
142 |
name_len = strlen (name); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
143 |
value_len = STRLEN (value); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
144 |
! p = (char *)xmalloc (2 + name_len + value_len); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
145 |
! strcpy (p, name); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
146 |
! p[name_len] = '='; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
147 |
if (value && *value) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
148 |
! strcpy (p + name_len + 1, value); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
149 |
else |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
150 |
! p[name_len + 1] = '\0'; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
151 |
return (p); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
152 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
153 |
--- 3872,3911 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
154 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
155 |
static inline char * |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
156 |
! mk_env_string (name, value, isfunc) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
157 |
const char *name, *value; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
158 |
+ int isfunc; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
159 |
{ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
160 |
! size_t name_len, value_len; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
161 |
! char *p, *q; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
162 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
163 |
name_len = strlen (name); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
164 |
value_len = STRLEN (value); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
165 |
! |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
166 |
! /* If we are exporting a shell function, construct the encoded function |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
167 |
! name. */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
168 |
! if (isfunc && value) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
169 |
! { |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
170 |
! p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
171 |
! q = p; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
172 |
! memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
173 |
! q += BASHFUNC_PREFLEN; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
174 |
! memcpy (q, name, name_len); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
175 |
! q += name_len; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
176 |
! memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
177 |
! q += BASHFUNC_SUFFLEN; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
178 |
! } |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
179 |
! else |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
180 |
! { |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
181 |
! p = (char *)xmalloc (2 + name_len + value_len); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
182 |
! memcpy (p, name, name_len); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
183 |
! q = p + name_len; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
184 |
! } |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
185 |
! |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
186 |
! q[0] = '='; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
187 |
if (value && *value) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
188 |
! memcpy (q + 1, value, value_len + 1); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
189 |
else |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
190 |
! q[1] = '\0'; |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
191 |
! |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
192 |
return (p); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
193 |
} |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
194 |
*************** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
195 |
*** 3953,3957 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
196 |
using the cached exportstr... */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
197 |
list[list_index] = USE_EXPORTSTR ? savestring (value) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
198 |
! : mk_env_string (var->name, value); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
199 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
200 |
if (USE_EXPORTSTR == 0) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
201 |
--- 3993,3997 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
202 |
using the cached exportstr... */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
203 |
list[list_index] = USE_EXPORTSTR ? savestring (value) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
204 |
! : mk_env_string (var->name, value, function_p (var)); |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
205 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
206 |
if (USE_EXPORTSTR == 0) |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
207 |
*** ../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
|
208 |
--- 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
|
209 |
*************** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
210 |
*** 26,30 **** |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
211 |
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
|
212 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
213 |
! #define PATCHLEVEL 26 |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
214 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
215 |
#endif /* _PATCHLEVEL_H_ */ |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
216 |
--- 26,30 ---- |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
217 |
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
|
218 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
219 |
! #define PATCHLEVEL 27 |
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
220 |
|
c47fe0edc204
20612604 upgrade bash to 4.3
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
221 |
#endif /* _PATCHLEVEL_H_ */ |