faccessat: Specify AT_SYMLINK_NOFOLLOW only when necessary.
- Specify AT_SYMLINK_NOFOLLOW in faccessat only when the symbolic-link is analyzed by overlay_path(). Change-Id: Ie3b1f7fedef7441fd4b39c5c8b2ef0f73cba770e Refs: #1370
This commit is contained in:
committed by
Masamichi Takagi
parent
4946fbdd82
commit
d82ac31bc6
@ -3169,7 +3169,7 @@ int overlay_blacklist(const char *path)
|
||||
* returns path to use *with dirfd* if it was provided.
|
||||
*/
|
||||
const char *
|
||||
overlay_path(int dirfd, const char *in, char *buf)
|
||||
overlay_path(int dirfd, const char *in, char *buf, int *resolvelinks)
|
||||
{
|
||||
const char *path = in;
|
||||
char *linkpath, *tmppath;
|
||||
@ -3179,6 +3179,10 @@ overlay_path(int dirfd, const char *in, char *buf)
|
||||
ssize_t n;
|
||||
int rc;
|
||||
|
||||
if (resolvelinks) {
|
||||
*resolvelinks = 0;
|
||||
}
|
||||
|
||||
__dprintf("considering fd %d path %s\n", dirfd, in);
|
||||
|
||||
if (dirfd != AT_FDCWD && in[0] != '/') {
|
||||
@ -3316,6 +3320,10 @@ checkexist_resolvelinks:
|
||||
if (n >= PATH_MAX)
|
||||
return in;
|
||||
}
|
||||
|
||||
if (resolvelinks) {
|
||||
*resolvelinks = 1;
|
||||
}
|
||||
}
|
||||
linkpath[0] = '/';
|
||||
linkpath++;
|
||||
@ -3864,7 +3872,8 @@ int main_loop(struct thread_data_s *my_thread)
|
||||
__dprintf("openat: %d, %s,tid=%d\n", (int)w.sr.args[0],
|
||||
pathbuf, my_thread->remote_tid);
|
||||
|
||||
fn = overlay_path((int)w.sr.args[0], pathbuf, tmpbuf);
|
||||
fn = overlay_path((int)w.sr.args[0],
|
||||
pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = openat(w.sr.args[0], fn, w.sr.args[2],
|
||||
w.sr.args[3]);
|
||||
@ -4474,7 +4483,8 @@ return_execve2:
|
||||
pathbuf[ret] = 0;
|
||||
__dprintf("readlinkat: %d, %s\n", (int)w.sr.args[0], pathbuf);
|
||||
|
||||
fn = overlay_path((int)w.sr.args[0], pathbuf, tmpbuf);
|
||||
fn = overlay_path((int)w.sr.args[0],
|
||||
pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = readlinkat(w.sr.args[0], fn, (char *)w.sr.args[2],
|
||||
w.sr.args[3]);
|
||||
@ -4494,7 +4504,7 @@ return_execve2:
|
||||
break;
|
||||
}
|
||||
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf);
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = readlink(fn, (char *)w.sr.args[1], w.sr.args[2]);
|
||||
SET_ERR(ret);
|
||||
@ -4515,7 +4525,8 @@ return_execve2:
|
||||
}
|
||||
pathbuf[ret] = 0;
|
||||
|
||||
fn = overlay_path((int)w.sr.args[0], pathbuf, tmpbuf);
|
||||
fn = overlay_path((int)w.sr.args[0],
|
||||
pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = fstatat((int)w.sr.args[0],
|
||||
fn,
|
||||
@ -4539,7 +4550,7 @@ return_execve2:
|
||||
break;
|
||||
}
|
||||
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf);
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = stat(fn, (struct stat *)w.sr.args[1]);
|
||||
SET_ERR(ret);
|
||||
@ -4548,7 +4559,9 @@ return_execve2:
|
||||
break;
|
||||
#endif /* __NR_stat */
|
||||
|
||||
case __NR_faccessat:
|
||||
case __NR_faccessat: {
|
||||
int resolvelinks = 0;
|
||||
|
||||
ret = do_strncpy_from_user(fd, pathbuf,
|
||||
(void *)w.sr.args[1], PATH_MAX);
|
||||
if (ret >= PATH_MAX) {
|
||||
@ -4560,14 +4573,16 @@ return_execve2:
|
||||
}
|
||||
pathbuf[ret] = 0;
|
||||
|
||||
fn = overlay_path((int)w.sr.args[0], pathbuf, tmpbuf);
|
||||
fn = overlay_path((int)w.sr.args[0],
|
||||
pathbuf, tmpbuf, &resolvelinks);
|
||||
|
||||
/* the syscall doesn't take flags argument, link
|
||||
* resolution happened first so don't do it again
|
||||
*/
|
||||
ret = faccessat((int)w.sr.args[0], fn,
|
||||
(int)w.sr.args[2],
|
||||
AT_SYMLINK_NOFOLLOW);
|
||||
resolvelinks == 0 ?
|
||||
0 : AT_SYMLINK_NOFOLLOW);
|
||||
SET_ERR(ret);
|
||||
__dprintf("faccessat: dirfd=%d, pathname=%s, mode=%d, ret=%ld\n",
|
||||
(int)w.sr.args[0], fn, (int)w.sr.args[2],
|
||||
@ -4575,7 +4590,7 @@ return_execve2:
|
||||
|
||||
do_syscall_return(fd, cpu, ret, 0, 0, 0, 0);
|
||||
break;
|
||||
|
||||
}
|
||||
#ifdef __NR_access
|
||||
case __NR_access:
|
||||
ret = do_strncpy_from_user(fd, pathbuf,
|
||||
@ -4588,7 +4603,7 @@ return_execve2:
|
||||
break;
|
||||
}
|
||||
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf);
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = access(fn, (int)w.sr.args[1]);
|
||||
SET_ERR(ret);
|
||||
@ -4607,7 +4622,7 @@ return_execve2:
|
||||
break;
|
||||
}
|
||||
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf);
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = getxattr(fn, (char *)w.sr.args[1],
|
||||
(void *)w.sr.args[2],
|
||||
@ -4628,7 +4643,7 @@ return_execve2:
|
||||
break;
|
||||
}
|
||||
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf);
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = lgetxattr(fn, (char *)w.sr.args[1],
|
||||
(void *)w.sr.args[2],
|
||||
@ -4862,7 +4877,7 @@ return_linux_spawn:
|
||||
}
|
||||
__dprintf("open: %s\n", pathbuf);
|
||||
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf);
|
||||
fn = overlay_path(AT_FDCWD, pathbuf, tmpbuf, NULL);
|
||||
|
||||
ret = open(fn, w.sr.args[1], w.sr.args[2]);
|
||||
SET_ERR(ret);
|
||||
|
||||
35
test/issues/1370/1370.sh
Executable file
35
test/issues/1370/1370.sh
Executable file
@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
# 1370.sh COPYRIGHT FUJITSU LIMITED 2020
|
||||
|
||||
. $HOME/.mck_test_config
|
||||
|
||||
BOOTPARAM="-c 12-15 -m 512M@4 -O"
|
||||
USELTP=1
|
||||
FAIL=0
|
||||
|
||||
. ../../common.sh
|
||||
|
||||
# for access02 setting
|
||||
chmod 666 /dev/mcos*
|
||||
|
||||
echo "issue-1370 test run."
|
||||
|
||||
ltp=("access01" "access02" "access03" "access04" "faccessat01")
|
||||
|
||||
for tp in ${ltp[@]}
|
||||
do
|
||||
pushd ${LTPBIN} > /dev/null
|
||||
${MCEXEC} ${LTPBIN}/${tp}
|
||||
if [ $? -ne 0 ]; then
|
||||
FAIL=1
|
||||
fi
|
||||
popd > /dev/null
|
||||
done
|
||||
|
||||
if [ ${FAIL} -eq 1 ]; then
|
||||
echo "issue-1370 test NG."
|
||||
else
|
||||
echo "issue-1370 test OK."
|
||||
fi
|
||||
|
||||
mcstop
|
||||
21
test/issues/1370/README
Normal file
21
test/issues/1370/README
Normal file
@ -0,0 +1,21 @@
|
||||
/* REDME COPYRIGHT FUJITSU LIMITED 2020 */
|
||||
|
||||
ltp: access04: アクセスできないはずのファイルがアクセスできる
|
||||
https://postpeta.pccluster.org/redmine/issues/1370
|
||||
|
||||
テストセットREADME
|
||||
|
||||
(0) 事前準備
|
||||
1. $HOME/.mck_test_configを用意する
|
||||
|
||||
(1) テスト実行方法
|
||||
1. ./1370.sh
|
||||
|
||||
(2) テスト項目詳細
|
||||
|
||||
LTPの下記項目を実行し、すべての項目でPASSになることを確認する
|
||||
- access01,02,03,04
|
||||
- faccessat01
|
||||
|
||||
|
||||
以上。
|
||||
275
test/issues/1370/result.log
Normal file
275
test/issues/1370/result.log
Normal file
@ -0,0 +1,275 @@
|
||||
mcstop+release.sh ... done
|
||||
mcreboot.sh -c 12-15 -m 512M@4 -O ... done
|
||||
issue-1370 test run.
|
||||
tst_test.c:1217: INFO: Timeout per run is 0h 05m 00s
|
||||
access01.c:243: PASS: access(accessfile_rwx, F_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_rwx, X_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, X_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_rwx, W_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, W_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK|W_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK|W_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK|X_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK|X_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_rwx, W_OK|X_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, W_OK|X_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK|W_OK|X_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_rwx, R_OK|W_OK|X_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_x, X_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_x, X_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_w, W_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_w, W_OK) as nobody
|
||||
access01.c:243: PASS: access(accessfile_r, R_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_r, R_OK) as nobody
|
||||
access01.c:263: PASS: access(accessfile_r, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_x, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_x, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, W_OK|X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, W_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, R_OK|X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, R_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, R_OK|W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, R_OK|W_OK|X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_r, R_OK|W_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, W_OK|X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, W_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, R_OK|X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, R_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, R_OK|W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, R_OK|W_OK|X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_w, R_OK|W_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_x, W_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_x, R_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_x, R_OK|W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessfile_x, R_OK|W_OK|X_OK) as nobody: EACCES (13)
|
||||
access01.c:243: PASS: access(accessfile_r, W_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_r, R_OK|W_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_w, R_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_w, R_OK|W_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_x, R_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_x, W_OK) as root
|
||||
access01.c:243: PASS: access(accessfile_x, R_OK|W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_r, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_r, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_r, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_w, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_w, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_w, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_x, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_x, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_x, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_r/accessfile_x, X_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_r, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_r, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_r, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_w, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_w, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_w, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_x, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_x, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_x, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_w/accessfile_x, X_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_r, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_r, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_r, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_r, R_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_r, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_w, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_w, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_w, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_w, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_w, W_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_x, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_x, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_x, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_x, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_x, X_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_x/accessfile_x, X_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_r, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_r, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_r, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_w, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_w, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_w, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_x, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_x, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_x, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rw/accessfile_x, X_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_r, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_r, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_r, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_r, R_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_r, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_w, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_w, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_w, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_w, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_w, W_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_x, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_x, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_x, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_x, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_x, X_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_rx/accessfile_x, X_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_r, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_r, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_r, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_r, R_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_r, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_w, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_w, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_w, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_w, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_w, W_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_x, F_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_x, F_OK) as nobody
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_x, R_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_x, W_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_x, X_OK) as root
|
||||
access01.c:243: PASS: access(accessdir_wx/accessfile_x, X_OK) as nobody
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_r, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_r, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_r, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_r, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_r, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_w, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_w, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_w, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_w, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_w, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_x, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_x, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_x, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_r/accessfile_x, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_r, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_r, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_r, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_r, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_r, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_w, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_w, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_w, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_w, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_w, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_x, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_x, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_x, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_w/accessfile_x, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_r, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_r, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_r, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_w, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_w, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_w, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_x, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_x/accessfile_x, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_r, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_r, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_r, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_r, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_r, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_w, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_w, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_w, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_w, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_w, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_x, F_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_x, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_x, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rw/accessfile_x, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_r, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_r, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_r, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_w, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_w, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_w, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_x, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_rx/accessfile_x, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_r, W_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_r, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_r, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_w, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_w, X_OK) as root: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_w, X_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_x, R_OK) as nobody: EACCES (13)
|
||||
access01.c:263: PASS: access(accessdir_wx/accessfile_x, W_OK) as nobody: EACCES (13)
|
||||
|
||||
Summary:
|
||||
passed 199
|
||||
failed 0
|
||||
skipped 0
|
||||
warnings 0
|
||||
tst_test.c:1217: INFO: Timeout per run is 0h 05m 00s
|
||||
access02.c:144: PASS: access(file_f, F_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(file_f, F_OK) as nobody behaviour is correct.
|
||||
access02.c:144: PASS: access(file_r, R_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(file_r, R_OK) as nobody behaviour is correct.
|
||||
access02.c:144: PASS: access(file_w, W_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(file_w, W_OK) as nobody behaviour is correct.
|
||||
access02.c:144: PASS: access(file_x, X_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(file_x, X_OK) as nobody behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_f, F_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_f, F_OK) as nobody behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_r, R_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_r, R_OK) as nobody behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_w, W_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_w, W_OK) as nobody behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_x, X_OK) as root behaviour is correct.
|
||||
access02.c:144: PASS: access(symlink_x, X_OK) as nobody behaviour is correct.
|
||||
|
||||
Summary:
|
||||
passed 16
|
||||
failed 0
|
||||
skipped 0
|
||||
warnings 0
|
||||
tst_test.c:1217: INFO: Timeout per run is 0h 05m 00s
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, F_OK) as root: EFAULT (14)
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, F_OK) as nobody: EFAULT (14)
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, R_OK) as root: EFAULT (14)
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, R_OK) as nobody: EFAULT (14)
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, W_OK) as root: EFAULT (14)
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, W_OK) as nobody: EFAULT (14)
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, X_OK) as root: EFAULT (14)
|
||||
access03.c:47: PASS: access(0xffffffffffffffff, X_OK) as nobody: EFAULT (14)
|
||||
|
||||
Summary:
|
||||
passed 8
|
||||
failed 0
|
||||
skipped 0
|
||||
warnings 0
|
||||
tst_test.c:1217: INFO: Timeout per run is 0h 05m 00s
|
||||
access04.c:75: PASS: access as root failed expectedly: EINVAL (22)
|
||||
access04.c:75: PASS: access as nobody failed expectedly: EINVAL (22)
|
||||
access04.c:75: PASS: access as root failed expectedly: ENOENT (2)
|
||||
access04.c:75: PASS: access as nobody failed expectedly: ENOENT (2)
|
||||
access04.c:75: PASS: access as root failed expectedly: ENAMETOOLONG (36)
|
||||
access04.c:75: PASS: access as nobody failed expectedly: ENAMETOOLONG (36)
|
||||
access04.c:75: PASS: access as root failed expectedly: ENOTDIR (20)
|
||||
access04.c:75: PASS: access as nobody failed expectedly: ENOTDIR (20)
|
||||
access04.c:75: PASS: access as root failed expectedly: ELOOP (40)
|
||||
access04.c:75: PASS: access as nobody failed expectedly: ELOOP (40)
|
||||
access04.c:75: PASS: access as root failed expectedly: EROFS (30)
|
||||
access04.c:75: PASS: access as nobody failed expectedly: EROFS (30)
|
||||
|
||||
Summary:
|
||||
passed 12
|
||||
failed 0
|
||||
skipped 0
|
||||
warnings 0
|
||||
overlay_path: readlink /proc/self/fd/100 failed: 2
|
||||
faccessat01 1 TPASS : faccessat() returned the expected errno 0: Success
|
||||
faccessat01 2 TPASS : faccessat() returned the expected errno 0: Success
|
||||
faccessat01 3 TPASS : faccessat() returned the expected errno 20: Not a directory
|
||||
faccessat01 4 TPASS : faccessat() returned the expected errno 9: Bad file descriptor
|
||||
faccessat01 5 TPASS : faccessat() returned the expected errno 0: Success
|
||||
faccessat01 6 TPASS : faccessat() returned the expected errno 0: Success
|
||||
issue-1370 test OK.
|
||||
mcstop+release.sh ... done
|
||||
Reference in New Issue
Block a user