Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d044dba5 authored by Josh Gao's avatar Josh Gao
Browse files

Set permissions on adb key file after write.

We're using AtomicFile to atomically update the key file, but that does
so by creating a new file with 0600 permissions, and then moving it into
place, which results in adbd not being able to read the file when not
root. Manually set the permissions after we write to the file to prevent
this.

Also, while we're at it, delete the explicit creation of the file, since
FileOutputStream does so automatically.

Bug: http://b/132774621
Test: manual
Change-Id: I286b90adfdc591c5e7d7e417ef06be287d77261e
parent 9a7f304d
Loading
Loading
Loading
Loading
+6 −14
Original line number Diff line number Diff line
@@ -661,12 +661,6 @@ public class AdbDebuggingManager {
        return mTestUserKeyFile == null ? getAdbFile(ADB_KEYS_FILE) : mTestUserKeyFile;
    }

    private void createKeyFile(File keyFile) throws IOException {
        keyFile.createNewFile();
        FileUtils.setPermissions(keyFile.toString(),
                FileUtils.S_IRUSR | FileUtils.S_IWUSR | FileUtils.S_IRGRP, -1, -1);
    }

    private void writeKey(String key) {
        try {
            File keyFile = getUserKeyFile();
@@ -675,14 +669,13 @@ public class AdbDebuggingManager {
                return;
            }

            if (!keyFile.exists()) {
                createKeyFile(keyFile);
            }

            FileOutputStream fo = new FileOutputStream(keyFile, true);
            fo.write(key.getBytes());
            fo.write('\n');
            fo.close();

            FileUtils.setPermissions(keyFile.toString(),
                    FileUtils.S_IRUSR | FileUtils.S_IWUSR | FileUtils.S_IRGRP, -1, -1);
        } catch (IOException ex) {
            Slog.e(TAG, "Error writing key:" + ex);
        }
@@ -698,10 +691,6 @@ public class AdbDebuggingManager {
                return;
            }

            if (!keyFile.exists()) {
                createKeyFile(keyFile);
            }

            atomicKeyFile = new AtomicFile(keyFile);
            fo = atomicKeyFile.startWrite();
            for (String key : keys) {
@@ -709,6 +698,9 @@ public class AdbDebuggingManager {
                fo.write('\n');
            }
            atomicKeyFile.finishWrite(fo);

            FileUtils.setPermissions(keyFile.toString(),
                    FileUtils.S_IRUSR | FileUtils.S_IWUSR | FileUtils.S_IRGRP, -1, -1);
        } catch (IOException ex) {
            Slog.e(TAG, "Error writing keys: " + ex);
            if (atomicKeyFile != null) {