From de0e3c8d260757556740113647a20c4127350b99 Mon Sep 17 00:00:00 2001 From: Sharad Binjola Date: Mon, 27 Feb 2023 11:52:58 -0800 Subject: [PATCH] Adding more defensive checks / exception handling --- .../com/chip/casting/DiscoveredNodeData.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/DiscoveredNodeData.java b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/DiscoveredNodeData.java index 9908c31f33b6dc..e9bf37646ab909 100644 --- a/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/DiscoveredNodeData.java +++ b/examples/tv-casting-app/android/App/app/src/main/jni/com/chip/casting/DiscoveredNodeData.java @@ -18,6 +18,7 @@ package com.chip.casting; import android.net.nsd.NsdServiceInfo; +import android.util.Log; import java.net.InetAddress; import java.nio.charset.StandardCharsets; import java.util.Arrays; @@ -25,6 +26,8 @@ import java.util.Map; public class DiscoveredNodeData { + private static final String TAG = DiscoveredNodeData.class.getSimpleName(); + private static final int MAX_IP_ADDRESSES = 5; private static final int MAX_ROTATING_ID_LEN = 50; private static final String KEY_DEVICE_NAME = "DN"; @@ -66,21 +69,29 @@ public DiscoveredNodeData(NsdServiceInfo serviceInfo) { String vp = new String(attributes.get(KEY_VENDOR_PRODUCT), StandardCharsets.UTF_8); if (vp != null) { String[] vpArray = vp.split("\\+"); - if (vpArray.length > 0) { - this.vendorId = Long.parseLong(vpArray[0]); - if (vpArray.length == 2) { - this.productId = Long.parseLong(vpArray[1]); + try { + if (vpArray.length > 0) { + this.vendorId = Long.parseLong(vpArray[0]); + if (vpArray.length == 2) { + this.productId = Long.parseLong(vpArray[1]); + } } + } catch (NumberFormatException e) { + Log.e(TAG, "Could not parse TXT record for VP: " + e.getMessage()); } + } else { + Log.e(TAG, "TXT Record for VP was null"); } } } if (serviceInfo.getHost() != null) { this.hostName = serviceInfo.getHost().getHostName(); + this.ipAddresses = Arrays.asList(serviceInfo.getHost()); + } else { + Log.e(TAG, "Host name was null"); } this.port = serviceInfo.getPort(); - this.ipAddresses = Arrays.asList(serviceInfo.getHost()); this.numIPs = 1; }