mirror of
https://github.com/zsh-users/zsh
synced 2024-07-21 10:14:19 +00:00
26950: warn on failed attempt to change user or group ID
26593: print warning but dont fail test if simple Unicode conversion fails
This commit is contained in:
parent
b2176aa525
commit
ff0b4ebdd5
|
@ -1,5 +1,11 @@
|
|||
2009-05-08 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 26953: Test/D07multibyte.ztst: print warning but don't fail test
|
||||
if system apparently can't do simple character set conversion.
|
||||
|
||||
* 26950: Src/params.c: warn on failed attempt to change real or
|
||||
effective group or user ID.
|
||||
|
||||
* 26949: Completion/Unix/Command/_sudo: new options and sudoedit.
|
||||
|
||||
* 26948: Src/Zle/zle_refresh.c: ensure recorded window sizes
|
||||
|
@ -11673,5 +11679,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.4680 $
|
||||
* $Revision: 1.4681 $
|
||||
*****************************************************
|
||||
|
|
18
Src/params.c
18
Src/params.c
|
@ -3527,7 +3527,11 @@ usernamesetfn(UNUSED(Param pm), char *x)
|
|||
# ifdef USE_INITGROUPS
|
||||
initgroups(x, pswd->pw_gid);
|
||||
# endif
|
||||
if(!setgid(pswd->pw_gid) && !setuid(pswd->pw_uid)) {
|
||||
if (setgid(pswd->pw_gid))
|
||||
zwarn("failed to change group ID: %e", errno);
|
||||
else if (setuid(pswd->pw_uid))
|
||||
zwarn("failed to change user ID: %e", errno);
|
||||
else {
|
||||
zsfree(cached_username);
|
||||
cached_username = ztrdup(pswd->pw_name);
|
||||
cached_uid = pswd->pw_uid;
|
||||
|
@ -3553,7 +3557,8 @@ void
|
|||
uidsetfn(UNUSED(Param pm), zlong x)
|
||||
{
|
||||
#ifdef HAVE_SETUID
|
||||
setuid((uid_t)x);
|
||||
if (setuid((uid_t)x))
|
||||
zwarn("failed to change user ID: %e", errno);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -3573,7 +3578,8 @@ void
|
|||
euidsetfn(UNUSED(Param pm), zlong x)
|
||||
{
|
||||
#ifdef HAVE_SETEUID
|
||||
seteuid((uid_t)x);
|
||||
if (seteuid((uid_t)x))
|
||||
zwarn("failed to change effective user ID: %e", errno);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -3593,7 +3599,8 @@ void
|
|||
gidsetfn(UNUSED(Param pm), zlong x)
|
||||
{
|
||||
#ifdef HAVE_SETUID
|
||||
setgid((gid_t)x);
|
||||
if (setgid((gid_t)x))
|
||||
zwarn("failed to change group ID: %e", errno);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -3613,7 +3620,8 @@ void
|
|||
egidsetfn(UNUSED(Param pm), zlong x)
|
||||
{
|
||||
#ifdef HAVE_SETEUID
|
||||
setegid((gid_t)x);
|
||||
if (setegid((gid_t)x))
|
||||
zwarn("failed to change effective group ID: %e", errno);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -378,17 +378,25 @@
|
|||
>X$'\300'Y$'\a'Z$'\177'T
|
||||
|
||||
# This also isn't strictly multibyte and is here to reduce the
|
||||
# likelihood of a "can't do character set conversion" error.
|
||||
testfn() { (LC_ALL=C; print $'\u00e9') }
|
||||
repeat 4 testfn 2>&1 | while read line; do
|
||||
if [[ $line = *"character not in range"* ]]; then
|
||||
print OK
|
||||
elif [[ $line = "?" ]]; then
|
||||
print OK
|
||||
else
|
||||
print Failed: no error message and no question mark
|
||||
fi
|
||||
done
|
||||
# likelihood of a "cannot do character set conversion" error.
|
||||
(print $'\u00e9') 2>&1 | read
|
||||
if [[ $REPLY != é ]]; then
|
||||
print "warning: your system can't do simple Unicode conversion." >&$ZTST_fd
|
||||
print "Check you have a correctly installed iconv library." >&$ZTST_fd
|
||||
# cheat
|
||||
repeat 4 print OK
|
||||
else
|
||||
testfn() { (LC_ALL=C; print $'\u00e9') }
|
||||
repeat 4 testfn 2>&1 | while read line; do
|
||||
if [[ $line = *"character not in range"* ]]; then
|
||||
print OK
|
||||
elif [[ $line = "?" ]]; then
|
||||
print OK
|
||||
else
|
||||
print Failed: no error message and no question mark
|
||||
fi
|
||||
done
|
||||
fi
|
||||
true
|
||||
0:error handling in Unicode quoting
|
||||
>OK
|
||||
|
|
Loading…
Reference in a new issue