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

Unverified Commit 8dacadc8 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 7b1f5054
Loading
Loading
Loading
Loading
+248 −240
Original line number Diff line number Diff line
@@ -2723,7 +2723,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.
@@ -2896,15 +2909,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);
        }
    }

    /**
@@ -2984,8 +2988,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);
@@ -3061,13 +3076,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)