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

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: Allow relative paths without prepending CWD 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
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..86608e4c6ffd4a998ce432f7e9dcd1558b4fb0b8 100644
--- a/tests/limited_file_access/limited_file_access.cc
+++ b/tests/limited_file_access/limited_file_access.cc
@@ -127,9 +127,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 +187,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 +305,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);
@@ -329,17 +333,31 @@ void test_information_leak() {
void test_valid_file_access() {
// Show that reads and writes to valid files work.
char file_name[PATH_MAX];
+ bool new_file = false;
+ // 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);
+
+ // Relative path
+ snprintf(file_name, PATH_MAX, "%s", g_temp_file_name);
+ do_test_write_read_file(file_name, new_file);
+ // 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);
- 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);
+
+ 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);
passed("test_valid_file_access", "all");
}

Powered by Google App Engine
This is Rietveld 408576698