Dont rely on env -0 in zsh

zsh outputs env vars in a nice one per line format using $'' encoding.
So exploit it
This commit is contained in:
Kovid Goyal 2022-04-15 12:17:59 +05:30
parent b866c3e783
commit 4cf54d2dfb
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -356,7 +356,7 @@ _ksi_deferred_init() {
} }
clone-in-kitty() { clone-in-kitty() {
builtin local data="pid=$$,cwd=$(builtin printf "%s" "$PWD" | builtin command base64),env=$(builtin command env -0 | builtin command base64)" builtin local data="pid=$$,cwd=$(builtin printf "%s" "$PWD" | builtin command base64)"
while :; do while :; do
case "$1" in case "$1" in
"") break;; "") break;;
@ -368,6 +368,16 @@ clone-in-kitty() {
esac esac
shift shift
done done
builtin local env
builtin local env_vars
builtin local varname
env_vars=(${(f)"$(builtin export)"})
for i in $env_vars; do
varname="${i%%=*}"
env="${env}$(builtin printf "%s=%s\0" "$varname" "${(P)varname}")"
done
data="$data,env=$(builtin printf "%s" "$env" | builtin command base64)"
data="${data//[[:space:]]}" data="${data//[[:space:]]}"
builtin local pos=0 builtin local pos=0
builtin local chunk_num=0 builtin local chunk_num=0