From 3e861a78e111af9696e9108c134d69b7d33cf99f Mon Sep 17 00:00:00 2001 From: "Conrad H. Appel, IV" Date: Wed, 19 Feb 2025 21:34:01 -0800 Subject: [PATCH] Android: prevent missing PROPERTY_NAME from causing a nullptr dereference. Not all MidiDeviceInfo structs have the PROPERTY_NAME property. To work around this, this will fall back to PROPERTY_PRODUCT, and just return an empty string if that's also missing. --- RtMidi.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/RtMidi.cpp b/RtMidi.cpp index 9c9bd0b6..d4505cf9 100644 --- a/RtMidi.cpp +++ b/RtMidi.cpp @@ -5004,7 +5004,13 @@ static std::string androidPortName(JNIEnv *env, unsigned int portNumber) { auto bundleClass = env->FindClass("android/os/Bundle"); auto getStringMethod = env->GetMethodID(bundleClass, "getString", "(Ljava/lang/String;)Ljava/lang/String;"); auto jPortName = (jstring) env->CallObjectMethod(bundle, getStringMethod, env->NewStringUTF("name")); - + if (jPortName == nullptr) { + jPortName = (jstring) env->CallObjectMethod(bundle, getStringMethod, env->NewStringUTF("product")); + if (jPortName == nullptr) { + return ""; + } + } + auto portNameChars = env->GetStringUTFChars(jPortName, NULL); auto name = std::string(portNameChars); env->ReleaseStringUTFChars(jPortName, portNameChars);