1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
From: Cyril Brulebois <kibi@debian.org>
Date: Fri, 29 Mar 2019 17:42:23 +0100
Subject: Revert 9c143ce52da11ec3d21a3491c3749841d3dc10f0 just to make sure the next patch can be applied
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11477,17 +11477,9 @@
const char *p;
const char *q;
- p = endofname(*ep);
-/* Used to have simple "p = strchrnul(*ep, '=')" here instead, but this
- * makes "export -p" to have output not suitable for "eval":
- * import os
- * os.environ["test-test"]="test"
- * if os.fork() == 0:
- * os.execv("ash", [ 'ash', '-c', 'eval $(export -p); echo OK' ]) # fixes this
- * os.execv("ash", [ 'ash', '-c', 'env | grep test-test' ])
- */
+ p = strchrnul(*ep, '=');
q = nullstr;
- if (*p == '=')
+ if (*p)
q = single_quote(++p);
out1fmt("%s%s%.*s%s\n", sep_prefix, sep, (int)(p - *ep), *ep, q);
}
@@ -14409,18 +14401,8 @@
initvar();
for (envp = environ; envp && *envp; envp++) {
-/* Used to have
- * p = endofname(*envp);
- * if (p != *envp && *p == '=') {
- * here to weed out badly-named variables, but this breaks
- * scenarios where people do want them passed to children:
- * import os
- * os.environ["test-test"]="test"
- * if os.fork() == 0:
- * os.execv("ash", [ 'ash', '-c', 'eval $(export -p); echo OK' ]) # fixes this
- * os.execv("ash", [ 'ash', '-c', 'env | grep test-test' ]) # breaks this
- */
- if (strchr(*envp, '=')) {
+ p = endofname(*envp);
+ if (p != *envp && *p == '=') {
setvareq(*envp, VEXPORT|VTEXTFIXED);
}
}
|