summary refs log tree commit diff
path: root/Test
diff options
context:
space:
mode:
authorDaniel Shahaf <d.s@daniel.shahaf.name>2016-12-02 12:08:26 +0000
committerDaniel Shahaf <d.s@daniel.shahaf.name>2016-12-03 10:00:08 +0000
commit334ed65e2765062a449897d70925255929eae8a8 (patch)
tree3cbd5c8bd1c3ddaa4572d18d72bae33a2c2af756 /Test
parentfd2ca229ddfc913f14f3b4b27fe8dcb25a5bba1d (diff)
downloadzsh-334ed65e2765062a449897d70925255929eae8a8.tar.gz
zsh-334ed65e2765062a449897d70925255929eae8a8.tar.xz
zsh-334ed65e2765062a449897d70925255929eae8a8.zip
40068: Abort execution when setuid/setgid fail.
The incumbent code would print an error message and continue execution
with the previous uid/gid values, not even setting lastval:

    % UID=42 id -u; echo $?
    zsh: failed to change user ID: operation not permitted
    1000
    0
    %
Diffstat (limited to 'Test')
-rw-r--r--Test/B02typeset.ztst10
1 files changed, 10 insertions, 0 deletions
diff --git a/Test/B02typeset.ztst b/Test/B02typeset.ztst
index 6d85a63fe..9c56c7e5e 100644
--- a/Test/B02typeset.ztst
+++ b/Test/B02typeset.ztst
@@ -711,3 +711,13 @@
   typeset isreadonly=still
 1:typeset returns status 1 if setting readonly variable
 ?(eval):2: read-only variable: isreadonly
+
+  if (( UID )); then
+    UID=$((UID+1)) date; echo "Status is printed, $?"
+  else
+    ZTST_skip="cannot test setuid error when tests run as superuser"
+  fi
+0:when cannot change UID, the command isn't run
+# 'date' did not run.
+>Status is printed, 1
+?(eval):2: failed to change user ID: operation not permitted