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

Unverified Commit ec398bec authored by Oliver Scott's avatar Oliver Scott Committed by Michael Bestas
Browse files

Split network policy XML parsing into read/write helper functions

Bug: https://issuetracker.google.com/issues/207800947
Change-Id: I360bfad4c549c24f56201164442056f842708124
parent cad15a40
Loading
Loading
Loading
Loading
+248 −240
Original line number Diff line number Diff line
@@ -2701,7 +2701,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        FileInputStream fis = null;
        try {
            fis = mPolicyFile.openRead();
            final TypedXmlPullParser in = Xml.resolvePullParser(fis);
            readPolicyXml(fis, false, UserHandle.USER_ALL);
        } catch (FileNotFoundException e) {
            // missing policy is okay, probably first boot
            upgradeDefaultBackgroundDataUL();
        } catch (Exception e) {
            Log.wtf(TAG, "problem reading network policy", e);
        } finally {
            IoUtils.closeQuietly(fis);
        }
    }

    private void readPolicyXml(InputStream inputStream, boolean forRestore, int userId)
            throws IOException, XmlPullParserException {
        final TypedXmlPullParser in = Xml.resolvePullParser(inputStream);

        // Must save the <restrict-background> tags and convert them to <uid-policy> later,
        // to skip UIDs that were explicitly denied.
@@ -2874,15 +2887,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                Slog.w(TAG, "unable to update policy on UID " + uid);
            }
        }

        } catch (FileNotFoundException e) {
            // missing policy is okay, probably first boot
            upgradeDefaultBackgroundDataUL();
        } catch (Exception e) {
            Log.wtf(TAG, "problem reading network policy", e);
        } finally {
            IoUtils.closeQuietly(fis);
        }
    }

    /**
@@ -2962,8 +2966,19 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        FileOutputStream fos = null;
        try {
            fos = mPolicyFile.startWrite();
            writePolicyXml(fos, false, UserHandle.USER_ALL);
            mPolicyFile.finishWrite(fos);
        } catch (IOException e) {
            if (fos != null) {
                mPolicyFile.failWrite(fos);
            }
        }
    }

    private void writePolicyXml(OutputStream outputStream, boolean forBackup, int userId)
            throws IOException {
        TypedXmlSerializer out = Xml.resolveSerializer(outputStream);

            TypedXmlSerializer out = Xml.resolveSerializer(fos);
        out.startDocument(null, true);

        out.startTag(null, TAG_POLICY_LIST);
@@ -3039,13 +3054,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        out.endTag(null, TAG_ALLOWLIST);

        out.endDocument();

            mPolicyFile.finishWrite(fos);
        } catch (IOException e) {
            if (fos != null) {
                mPolicyFile.failWrite(fos);
            }
        }
    }

    @EnforcePermission(MANAGE_NETWORK_POLICY)