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

Commit fb4f4073 authored by Marco Ballesio's avatar Marco Ballesio
Browse files

freezer: handle exception in locks file format

Safeguard /proc/locks processing from wrongly formatted /proc/locks
files

Bug: 179171387
Test: could not reproduce the issue, but verified that no crashes
occurred in a prolonged test (4hrs+)

Change-Id: Ia8a12903f2e520e51780c8b05876aa1c9083e92b
parent 2d29d34f
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1442,7 +1442,7 @@ public class Process {
     *
     * @hide
     */
    public static boolean hasFileLocks(int pid) throws IOException {
    public static boolean hasFileLocks(int pid) throws Exception {
        BufferedReader br = null;

        try {
@@ -1454,9 +1454,14 @@ public class Process {

                for (int i = 0; i < 5 && st.hasMoreTokens(); i++) {
                    String str = st.nextToken();
                    try {
                        if (i == 4 && Integer.parseInt(str) == pid) {
                            return true;
                        }
                    } catch (NumberFormatException nfe) {
                        throw new Exception("Exception parsing /proc/locks at \" "
                                + line +  " \", token #" + i);
                    }
                }
            }

+2 −2
Original line number Diff line number Diff line
@@ -1149,7 +1149,7 @@ public final class CachedAppOptimizer {
                    }
                    return;
                }
            } catch (IOException e) {
            } catch (Exception e) {
                Slog.e(TAG_AM, "Not freezing. Unable to check file locks for " + name + "(" + pid
                        + "): " + e);
                return;
@@ -1244,7 +1244,7 @@ public final class CachedAppOptimizer {
                        }
                    }
                }
            } catch (IOException e) {
            } catch (Exception e) {
                Slog.e(TAG_AM, "Unable to check file locks for " + name + "(" + pid + "): " + e);
                synchronized (mAm) {
                    synchronized (mProcLock) {