Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: tests/limited_file_access/limited_file_access.cc

Issue 1690983004: Extended restricted filesystem to support relative paths. (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/trusted/service_runtime/sel_main.c ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/limited_file_access/limited_file_access.cc
diff --git a/tests/limited_file_access/limited_file_access.cc b/tests/limited_file_access/limited_file_access.cc
index 77de1cf79acb58470479c977dfbfa3c1e0f65bf3..8308efa50aea34923d38dad97ab4b29c1743aaee 100644
--- a/tests/limited_file_access/limited_file_access.cc
+++ b/tests/limited_file_access/limited_file_access.cc
@@ -74,12 +74,13 @@ void do_test_write_read_file(const char *filename, bool new_file) {
void test_directory_walk() {
// Attempt to walk down valid directory structure (and back again).
- ASSERT_EQ_MSG(chdir("/"), 0, "chdir() failed");
-
char dirname[PATH_MAX];
ASSERT_NE_MSG(getcwd(dirname, PATH_MAX), NULL, "getcwd() failed");
ASSERT_EQ(strcmp(dirname, "/"), 0);
+ ASSERT_EQ_MSG(chdir("."), 0, "chdir() failed");
+ ASSERT_EQ_MSG(chdir("/"), 0, "chdir() failed");
+
DIR *d = opendir(dirname);
ASSERT_NE_MSG(d, NULL, "opendir() failed");
int count = 0;
@@ -127,9 +128,16 @@ void test_directory_walk() {
ASSERT(current_directory_seen);
ASSERT_EQ(count, 5);
+ // Chdir with relative path name
+ ASSERT_EQ_MSG(chdir(g_temp_sub_dir_name), 0, "chdir() failed");
+ ASSERT_NE_MSG(getcwd(dirname, PATH_MAX), NULL, "getcwd() failed");
+ ASSERT_EQ(strcmp(dirname, g_temp_sub_dir_path), 0);
+
+ // Chdir with absolute path name
ASSERT_EQ_MSG(chdir(g_temp_sub_dir_path), 0, "chdir() failed");
ASSERT_NE_MSG(getcwd(dirname, PATH_MAX), NULL, "getcwd() failed");
ASSERT_EQ(strcmp(dirname, g_temp_sub_dir_path), 0);
+
d = opendir(dirname);
count = 0;
@@ -180,9 +188,9 @@ void test_new_directory_access() {
ASSERT_EQ(mkdir("/test_dir/", mode), 0);
ASSERT_EQ(rmdir("/test_dir/"), 0);
- // Cannot make directory using relative path.
- ASSERT_EQ(mkdir("test_dir/", mode), -1);
- ASSERT_EQ(errno, EACCES);
+ // Test that relative paths can also be used.
+ ASSERT_EQ(mkdir("test_dir", mode), 0);
+ ASSERT_EQ(rmdir("test_dir"), 0);
char file_name[PATH_MAX];
snprintf(file_name, PATH_MAX, "%s/test_dir", g_temp_sub_dir_path);
@@ -298,10 +306,7 @@ void test_information_leak() {
ASSERT_EQ(stat("//", &buf), 0);
ASSERT_EQ(stat("/./.", &buf), 0);
ASSERT_EQ(stat("/./////.", &buf), 0);
-
- // We should not be able to access relative paths.
- ASSERT_EQ(stat(".", &buf), -1);
- ASSERT_EQ(errno, EACCES);
+ ASSERT_EQ(stat(".", &buf), 0);
// We should not be able to access paths containing "..".
snprintf(path, PATH_MAX, "%s/..", g_temp_sub_dir_path);
@@ -330,16 +335,29 @@ void test_valid_file_access() {
// Show that reads and writes to valid files work.
char file_name[PATH_MAX];
+ // Absolute path
snprintf(file_name, PATH_MAX, "%s", g_temp_file_path);
- do_test_write_read_file(file_name, false);
+ do_test_write_read_file(file_name, /* new_file= */ false);
+
+ // Relative path
+ snprintf(file_name, PATH_MAX, "%s", g_temp_file_name);
+ do_test_write_read_file(file_name, /* new_file= */ false);
+ // Absolute path
snprintf(file_name, PATH_MAX, "%s/%s", g_temp_sub_dir_path,
g_temp_sub_file_name);
- do_test_write_read_file(file_name, false);
+ do_test_write_read_file(file_name, /* new_file= */ false);
- snprintf(file_name, PATH_MAX, "%s/%s", g_temp_sub_dir_path,
+ // Relative path
+ snprintf(file_name, PATH_MAX, "%s/%s", g_temp_sub_dir_name,
g_temp_sub_file_name);
- do_test_write_read_file(file_name, false);
+ do_test_write_read_file(file_name, /* new_file= */ false);
+
+ ASSERT_EQ_MSG(chdir(g_temp_sub_dir_name), 0, "chdir() failed");
+
+ // Relative path
+ snprintf(file_name, PATH_MAX, "%s", g_temp_sub_file_name);
+ do_test_write_read_file(file_name, /* new_file= */ false);
passed("test_valid_file_access", "all");
}
« no previous file with comments | « src/trusted/service_runtime/sel_main.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698