Commit 45dcca11 authored by Satoshi Niwa's avatar Satoshi Niwa Committed by Chromium LUCI CQ

Reland "Ensure child_path for SetProjectId() is a relative path"

This reverts commit 43cd4f53.

This time, I removed DCHECK and also inlined
FilePath("/").AppendRelativePath() directly in the caller.

BUG=b:171847983
TEST=unittest

Change-Id: I4ff3ed1313a0eb38457b8b1d2c1ca1ddf450473f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2612789Reviewed-by: default avatarRyo Hashimoto <hashimoto@chromium.org>
Commit-Queue: Satoshi Niwa <niwa@chromium.org>
Auto-Submit: Satoshi Niwa <niwa@chromium.org>
Cr-Commit-Position: refs/heads/master@{#840975}
parent c65114e5
...@@ -57,27 +57,29 @@ bool ArcDiskQuotaBridge::convertPathForSetProjectId( ...@@ -57,27 +57,29 @@ bool ArcDiskQuotaBridge::convertPathForSetProjectId(
return false; return false;
} }
*child_path_out = base::FilePath();
if (kDownloadPath.IsParent(android_path)) { if (kDownloadPath.IsParent(android_path)) {
// /storage/emulated/0/Download/* => // /storage/emulated/0/Download/* =>
// parent=/home/user/<hash>/Downloads/, child=* // parent=/home/user/<hash>/Downloads/, child=*
*parent_path_out = cryptohome::SetProjectIdAllowedPathType::PATH_DOWNLOADS; *parent_path_out = cryptohome::SetProjectIdAllowedPathType::PATH_DOWNLOADS;
*child_path_out = base::FilePath();
return kDownloadPath.AppendRelativePath(android_path, child_path_out); return kDownloadPath.AppendRelativePath(android_path, child_path_out);
} else if (kExternalStoragePath.IsParent(android_path)) { } else if (kExternalStoragePath.IsParent(android_path)) {
// /storage/emulated/0/* => // /storage/emulated/0/* =>
// parent=/home/root/<hash>/android-data/, chile=/data/media/0/* // parent=/home/root/<hash>/android-data/, child=data/media/0/*
*parent_path_out = *parent_path_out =
cryptohome::SetProjectIdAllowedPathType::PATH_ANDROID_DATA; cryptohome::SetProjectIdAllowedPathType::PATH_ANDROID_DATA;
*child_path_out = kDataMediaPath; // child_path should be relative to the root.
return kExternalStoragePath.AppendRelativePath(android_path, return base::FilePath("/").AppendRelativePath(kDataMediaPath,
child_path_out) &&
kExternalStoragePath.AppendRelativePath(android_path,
child_path_out); child_path_out);
} else if (kDataMediaPath.IsParent(android_path)) { } else if (kDataMediaPath.IsParent(android_path)) {
// /data/media/0/* => // /data/media/0/* =>
// parent=/home/root/<hash>/android-data/, child=/data/media/0/* // parent=/home/root/<hash>/android-data/, child=data/media/0/*
*parent_path_out = *parent_path_out =
cryptohome::SetProjectIdAllowedPathType::PATH_ANDROID_DATA; cryptohome::SetProjectIdAllowedPathType::PATH_ANDROID_DATA;
*child_path_out = android_path; // child_path should be relative to the root.
return true; return base::FilePath("/").AppendRelativePath(android_path, child_path_out);
} else { } else {
return false; return false;
} }
......
...@@ -26,13 +26,13 @@ TEST(ArcDiskQuotaBridgeTest, ConvertPathForSetProjectId) { ...@@ -26,13 +26,13 @@ TEST(ArcDiskQuotaBridgeTest, ConvertPathForSetProjectId) {
base::FilePath("/storage/emulated/0/Pictures/test.png"), &parent_path, base::FilePath("/storage/emulated/0/Pictures/test.png"), &parent_path,
&child_path)); &child_path));
EXPECT_EQ(PathType::PATH_ANDROID_DATA, parent_path); EXPECT_EQ(PathType::PATH_ANDROID_DATA, parent_path);
EXPECT_EQ("/data/media/0/Pictures/test.png", child_path.value()); EXPECT_EQ("data/media/0/Pictures/test.png", child_path.value());
EXPECT_TRUE(ArcDiskQuotaBridge::convertPathForSetProjectId( EXPECT_TRUE(ArcDiskQuotaBridge::convertPathForSetProjectId(
base::FilePath("/data/media/0/Movies/test.mp4"), &parent_path, base::FilePath("/data/media/0/Movies/test.mp4"), &parent_path,
&child_path)); &child_path));
EXPECT_EQ(PathType::PATH_ANDROID_DATA, parent_path); EXPECT_EQ(PathType::PATH_ANDROID_DATA, parent_path);
EXPECT_EQ("/data/media/0/Movies/test.mp4", child_path.value()); EXPECT_EQ("data/media/0/Movies/test.mp4", child_path.value());
// Unallowed path. // Unallowed path.
EXPECT_FALSE(ArcDiskQuotaBridge::convertPathForSetProjectId( EXPECT_FALSE(ArcDiskQuotaBridge::convertPathForSetProjectId(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment