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

Commit ba4b2faa authored by Christopher Tate's avatar Christopher Tate Committed by Android (Google) Code Review
Browse files

Merge "Fix embedded spaces in tar stream EVEN HARDER"

parents 2391a983 3f6c77b7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -503,10 +503,10 @@ int write_tarfile(const String8& packageName, const String8& domain,
        needExtended = true;
    }

    // Non-7bit-clean path or embedded spaces also mean needing pax extended format
    // Non-7bit-clean path also means needing pax extended format
    if (!needExtended) {
        for (size_t i = 0; i < filepath.length(); i++) {
            if ((filepath[i] & 0x80) != 0 || filepath[i] == ' ') {
            if ((filepath[i] & 0x80) != 0) {
                needExtended = true;
                break;
            }
+3 −2
Original line number Diff line number Diff line
@@ -2859,6 +2859,7 @@ class BackupManagerService extends IBackupManager.Stub {
            final int end = offset + maxChars;
            for (int i = offset; i < end; i++) {
                final byte b = data[i];
                // Numeric fields in tar can terminate with either NUL or SPC
                if (b == 0 || b == ' ') break;
                if (b < '0' || b > ('0' + radix - 1)) {
                    throw new IOException("Invalid number in header");
@@ -2871,8 +2872,8 @@ class BackupManagerService extends IBackupManager.Stub {
        String extractString(byte[] data, int offset, int maxChars) throws IOException {
            final int end = offset + maxChars;
            int eos = offset;
            // tar string fields can end with either NUL or SPC
            while (eos < end && data[eos] != 0 && data[eos] != ' ') eos++;
            // tar string fields terminate early with a NUL
            while (eos < end && data[eos] != 0) eos++;
            return new String(data, offset, eos-offset, "US-ASCII");
        }