From ca6b5bb8f487de7c1ad8641aea27a1122a09a8b5 Mon Sep 17 00:00:00 2001
From: Luka Panio <lukapanio@gmail.com>
Date: Sun, 9 Jun 2024 13:33:37 +0200
Subject: [PATCH] UEventObserver: ignore uevents without name

* Fix for NPE on broken uevents causing soft reboot

E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: UEventObserver
E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
E AndroidRuntime:   at com.android.server.policy.PhoneWindowManager$HdmiVideoExtconUEventObserver.parseState(PhoneWindowManager.java:7667)
E AndroidRuntime:   at com.android.server.policy.PhoneWindowManager$HdmiVideoExtconUEventObserver.parseState(PhoneWindowManager.java:7633)
E AndroidRuntime:   at com.android.server.ExtconStateObserver.onUEvent(ExtconStateObserver.java:56)
E AndroidRuntime:   at com.android.server.ExtconUEventObserver.onUEvent(ExtconUEventObserver.java:63)
E AndroidRuntime:   at android.os.UEventObserver$UEventThread.sendEvent(UEventObserver.java:217)

Change-Id: I17711b0af41f4e7cd2ad57d242e1bdd209635622
---
 core/java/android/os/UEventObserver.java | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/java/android/os/UEventObserver.java b/core/java/android/os/UEventObserver.java
index fa30e509f8cc..1abf98258028 100644
--- a/core/java/android/os/UEventObserver.java
+++ b/core/java/android/os/UEventObserver.java
@@ -211,6 +211,9 @@ public abstract class UEventObserver {
 
             if (!mTempObserversToSignal.isEmpty()) {
                 final UEvent event = new UEvent(message);
+                if (event.get("NAME") == null) {
+                    return;
+                }
                 final int N = mTempObserversToSignal.size();
                 for (int i = 0; i < N; i++) {
                     final UEventObserver observer = mTempObserversToSignal.get(i);
-- 
GitLab