exec: Allocate necessary number of pages to argenv area

Change-Id: I298a0de2f4e34ed774e2db7d90167dbe0d35586e
Refs: #1174
This commit is contained in:
Ken Sato
2019-07-04 11:12:29 +09:00
committed by Masamichi Takagi
parent e58e1c6e33
commit 3e267e24cb
5 changed files with 155 additions and 7 deletions

70
test/issues/1174/C1174.sh Normal file
View File

@ -0,0 +1,70 @@
#!/bin/sh
USELTP=1
USEOSTEST=0
. ../../common.sh
issue=1174
tid=01
echo "*** C$issueT$tid start *******************************"
echo "execute: mcexec ls -ld /proc/*/* &> /dev/null"
${MCEXEC} ls -ld /proc/*/* &> /dev/null
if [ $? -ne 0 ]; then
echo "*** C$issue$tid: PASSED"
else
echo "*** C$issue$tid: FAILED"
fi
echo ""
tid=02
echo "*** C$issueT$tid start *******************************"
sudo PATH=${LTPBIN}:${PATH} ${MCEXEC} ${LTPBIN}/execve01 \
2>&1 | tee ./C${issue}T${tid}.txt
ok=`grep TPASS C${issue}T${tid}.txt | wc -l`
ng=`grep TFAIL C${issue}T${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** C${issue}T$tid: PASSED (ok:$ok)"
else
echo "*** C${issue}T$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""
tid=03
echo "*** C$issueT$tid start *******************************"
sudo PATH=${LTPBIN}:${PATH} ${MCEXEC} ${LTPBIN}/execve02 \
2>&1 | tee ./C${issue}T${tid}.txt
ok=`grep TPASS C${issue}T${tid}.txt | wc -l`
ng=`grep TFAIL C${issue}T${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** C${issue}T$tid: PASSED (ok:$ok)"
else
echo "*** C${issue}T$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""
tid=04
echo "*** C$issueT$tid start *******************************"
sudo PATH=${LTPBIN}:${PATH} ${MCEXEC} ${LTPBIN}/execve03 \
2>&1 | tee ./C${issue}T${tid}.txt
ok=`grep TPASS C${issue}T${tid}.txt | wc -l`
ng=`grep TFAIL C${issue}T${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** C${issue}T$tid: PASSED (ok:$ok)"
else
echo "*** C${issue}T$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""
tid=05
echo "*** C$issueT$tid start *******************************"
sudo PATH=${LTPBIN}:${PATH} ${MCEXEC} ${LTPBIN}/execve05 \
20 ${LTPBIN}/execve05 ${LTPBIN}/execve05 4 2>&1 | tee ./C${issue}T${tid}.txt
ok=`grep TPASS C${issue}T${tid}.txt | wc -l`
ng=`grep TFAIL C${issue}T${tid}.txt | wc -l`
if [ $ng = 0 ]; then
echo "*** C${issue}T$tid: PASSED (ok:$ok)"
else
echo "*** C${issue}T$tid: FAILED (ok:$ok, ng:$ng)"
fi
echo ""

32
test/issues/1174/README Normal file
View File

@ -0,0 +1,32 @@
【Issue#1174 動作確認】
□ テスト内容
1. Issueで報告された再現プログラムでの確認
C1174T01: mcexec ls -ld /proc/*/* を実行する
mcexecが無応答にならず、正常に終了することを確認
2. 既存のexecve機能に影響がないことをLTPを用いて確認
C1174T02: ltp-execve01
子プロセスがexecveを実行し、正常に終了することを確認 (TPASS 1件)
C1174T03: ltp-execve02
rootのみに実行権限が付与された実行ファイルを、
一般ユーザがexecveした場合に失敗することを確認 (TPASS 1件)
C1174T04: ltp-execve03
下記の不正な引数でexecveを実行した場合、返り値と設定されるerrnoが
正しいことを確認 (TPASS 6件)
C1174T05: ltp-execve05
execveの標準的な動作を確認 (TPASS 8件)
□ 実行手順
$ make test
McKernelのインストール先や、OSTEST, LTPの配置場所は、
$HOME/.mck_test_config を参照している
.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
$HOMEにコピーし、適宜編集する
□ 実行結果
result.log 参照。
すべての項目をPASSしていることを確認。

View File

@ -0,0 +1,33 @@
*** C01 start *******************************
execute: mcexec ls -ld /proc/*/* &> /dev/null
*** C117401: PASSED
*** C02 start *******************************
execl01_child 1 TPASS : execve01_child executed
execve01 0 TINFO : Child process returned TPASS
*** C1174T02: PASSED (ok:2)
*** C03 start *******************************
execve02 1 TPASS : execve() failed expectedly: TEST_ERRNO=EACCES(13): Permission denied
execve02 0 TINFO : Child process returned TPASS
*** C1174T03: PASSED (ok:2)
*** C04 start *******************************
execve03 1 TPASS : execve failed as expected: TEST_ERRNO=ENAMETOOLONG(36): File name too long
execve03 2 TPASS : execve failed as expected: TEST_ERRNO=ENOENT(2): No such file or directory
execve03 3 TPASS : execve failed as expected: TEST_ERRNO=ENOTDIR(20): Not a directory
execve03 4 TPASS : execve failed as expected: TEST_ERRNO=EFAULT(14): Bad address
execve03 5 TPASS : execve failed as expected: TEST_ERRNO=EACCES(13): Permission denied
execve03 6 TPASS : execve failed as expected: TEST_ERRNO=ENOEXEC(8): Exec format error
*** C1174T04: PASSED (ok:6)
*** C05 start *******************************
execve05 1 TPASS : Test DONE, pid 2663, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
execve05 1 TPASS : Test DONE, pid 2694, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
execve05 1 TPASS : Test DONE, pid 2724, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
execve05 1 TPASS : Test DONE, pid 2754, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
execve05 1 TPASS : Test DONE, pid 2784, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
execve05 1 TPASS : Test DONE, pid 2814, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
execve05 1 TPASS : Test DONE, pid 2844, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
execve05 1 TPASS : Test DONE, pid 2874, -- /home/satoken/ltp/testcases/bin/execve05 0 /home/satoken/ltp/testcases/bin/execve05 /home/satoken/ltp/testcases/bin/execve05
*** C1174T05: PASSED (ok:8)