Bug 1926997: New profile directories should not be world readable. r=profiles-reviewers,jhirsch

Differential Revision: https://phabricator.services.mozilla.com/D241597
This commit is contained in:
Dave Townsend
2025-03-17 15:08:58 +00:00
parent ae74acd170
commit 7d1cb65882
2 changed files with 22 additions and 2 deletions

View File

@@ -976,13 +976,19 @@ class SelectableProfileServiceClass extends EventEmitter {
PathUtils.join( PathUtils.join(
SelectableProfileServiceClass.getDirectory("DefProfRt").path, SelectableProfileServiceClass.getDirectory("DefProfRt").path,
profileDir profileDir
) ),
{
permissions: 0o700,
}
), ),
IOUtils.makeDirectory( IOUtils.makeDirectory(
PathUtils.join( PathUtils.join(
SelectableProfileServiceClass.getDirectory("DefProfLRt").path, SelectableProfileServiceClass.getDirectory("DefProfLRt").path,
profileDir profileDir
) ),
{
permissions: 0o700,
}
), ),
]); ]);

View File

@@ -7,6 +7,9 @@ const { MockRegistrar } = ChromeUtils.importESModule(
"resource://testing-common/MockRegistrar.sys.mjs" "resource://testing-common/MockRegistrar.sys.mjs"
); );
// Windows doesn't support the normal permissions and always creates and returns as 0666.
const EXPECTED_PERMISSIONS = AppConstants.platform == "win" ? 0o666 : 0o700;
const badgingService = { const badgingService = {
isRegistered: false, isRegistered: false,
badge: null, badge: null,
@@ -172,6 +175,17 @@ add_task(async function test_SelectableProfileLifecycle() {
"Profile local dir was successfully created" "Profile local dir was successfully created"
); );
Assert.equal(
(await IOUtils.stat(profilePath)).permissions,
EXPECTED_PERMISSIONS,
"Profile dir should have the correct permissions"
);
Assert.equal(
(await IOUtils.stat(profileLocalPath)).permissions,
EXPECTED_PERMISSIONS,
"Profile local dir should have the correct permissions"
);
let times = PathUtils.join(rootDir.path, "times.json"); let times = PathUtils.join(rootDir.path, "times.json");
Assert.ok(await IOUtils.exists(times), "times.json should exist"); Assert.ok(await IOUtils.exists(times), "times.json should exist");
let json = await IOUtils.readJSON(times); let json = await IOUtils.readJSON(times);