From 3fd22f2c8e1fb70df211828c4f970de7725f4b34 Mon Sep 17 00:00:00 2001 From: Jia Zhang Date: Wed, 6 Nov 2019 06:17:00 +0000 Subject: [PATCH] [Pal/regression] Add regression test for sgx.allow_file_creation --- Pal/regression/File.c | 9 +++++++++ Pal/regression/File.manifest.template | 1 + Pal/regression/test_pal.py | 13 +++++++++++++ 3 files changed, 23 insertions(+) diff --git a/Pal/regression/File.c b/Pal/regression/File.c index 4e3588b6..3ddaa0ef 100644 --- a/Pal/regression/File.c +++ b/Pal/regression/File.c @@ -123,6 +123,15 @@ int main(int argc, char** argv, char** envp) { DkObjectClose(file6); } + file6 = + DkStreamOpen("file:file_nonexist_disallowed.tmp", PAL_ACCESS_RDWR, + PAL_SHARE_OWNER_R | PAL_SHARE_OWNER_W, PAL_CREATE_TRY | PAL_CREATE_ALWAYS, 0); + if (!file6) { + pal_printf("File Creation Test 4 OK\n"); + } else { + DkObjectClose(file6); + } + if (file4) { /* test file writing */ diff --git a/Pal/regression/File.manifest.template b/Pal/regression/File.manifest.template index 4399d11e..95ebb738 100644 --- a/Pal/regression/File.manifest.template +++ b/Pal/regression/File.manifest.template @@ -14,6 +14,7 @@ net.allow_bind.1 = 127.0.0.1:8000 # allow to connect to port 8000 net.allow_peer.1 = 127.0.0.1:8000 +sgx.allow_file_creation = 0 sgx.trusted_files.tmp1 = file:File sgx.trusted_files.tmp2 = file:../regression/File sgx.allowed_files.tmp3 = file:file_nonexist.tmp diff --git a/Pal/regression/test_pal.py b/Pal/regression/test_pal.py index 411731d9..563360a1 100644 --- a/Pal/regression/test_pal.py +++ b/Pal/regression/test_pal.py @@ -300,6 +300,19 @@ class TC_20_SingleProcess(RegressionTestCase): # File Deletion self.assertFalse(pathlib.Path('file_delete.tmp').exists()) + @unittest.skipUnless(HAS_SGX, 'this test requires SGX') + def test_101_nonexist_file(self): + # Explicitly remove the file file_nonexist_disallowed.tmp before + # running binary. Otherwise this test will fail if these tests are + # run repeatedly. + os.remove('file_nonexist_disallowed.tmp') + + stdout, stderr = self.run_binary(['File']) + + # Run file creation for non-existing file. This behavior is + # disallowed unless sgx.allow_file_creation is explicitly set to 1. + self.assertIn('File Creation Test 4 OK', stderr) + def test_110_directory(self): for path in ['dir_exist.tmp', 'dir_nonexist.tmp', 'dir_delete.tmp']: try: