Usb: Add status check to prevent NPE

This patch prevents a Null Pointer Exception in
queryMoistureDetectionStatus() when getPortStatusHelper() fails to open
the /sys/class/typec file. The failure results in an empty
currentPortStatus vector, causing the NPE when accessing its first
element.

Bug: 361097811
Flag: EXEMPT bugfix
Test: NPE does not occur when getPortStatusHelper() fails
Change-Id: Id6886283d6f2f9179b3a9c5d535646874e9f277b
Signed-off-by: Kuen-Han Tsai <khtsai@google.com>
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp
index 0736f4c..ab7932b 100644
--- a/usb/usb/Usb.cpp
+++ b/usb/usb/Usb.cpp
@@ -943,17 +943,21 @@
     Status status;
     pthread_mutex_lock(&usb->mLock);
     status = getPortStatusHelper(usb, currentPortStatus);
-    queryMoistureDetectionStatus(usb, currentPortStatus);
-    queryPowerTransferStatus(usb, currentPortStatus);
-    queryNonCompliantChargerStatus(currentPortStatus);
-    queryUsbDataSession(usb, currentPortStatus);
-    if (usb->mCallback != NULL) {
-        ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus,
-            status);
-        if (!ret.isOk())
-            ALOGE("queryPortStatus error %s", ret.getDescription().c_str());
+    if (status == Status::SUCCESS && currentPortStatus->size() > 0) {
+        queryMoistureDetectionStatus(usb, currentPortStatus);
+        queryPowerTransferStatus(usb, currentPortStatus);
+        queryNonCompliantChargerStatus(currentPortStatus);
+        queryUsbDataSession(usb, currentPortStatus);
+        if (usb->mCallback != NULL) {
+            ScopedAStatus ret = usb->mCallback->notifyPortStatusChange(*currentPortStatus,
+                status);
+            if (!ret.isOk())
+                ALOGE("queryPortStatus error %s", ret.getDescription().c_str());
+        } else {
+            ALOGI("Notifying userspace skipped. Callback is NULL");
+        }
     } else {
-        ALOGI("Notifying userspace skipped. Callback is NULL");
+        ALOGI("%s skipped. currentPortStatus is empty", __func__);
     }
     pthread_mutex_unlock(&usb->mLock);
 }