From 2a263e2418be57ff2dd048552459b280277313bc Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Wed, 7 Jun 2017 02:21:48 -0700 Subject: [PATCH] Avoid a crash in nativeStateExtractDiskPaths() --- Android/jni/jnihooks.c | 7 +++++-- src/disk.c | 5 ----- src/misc.c | 1 + 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Android/jni/jnihooks.c b/Android/jni/jnihooks.c index 8c65fb18..7cb30a00 100644 --- a/Android/jni/jnihooks.c +++ b/Android/jni/jnihooks.c @@ -551,18 +551,21 @@ jstring Java_org_deadc0de_apple2ix_Apple2Activity_nativeStateExtractDiskPaths(JN LOG(": (%s)", path); JSON_ref jsonData; + bool ret = json_createFromString("{}", &jsonData); + assert(ret >= 0 && "should be able to create JSON"); + if (!emulator_stateExtractDiskPaths(path, &jsonData)) { LOG("OOPS, could not extract disk paths from emulator state file"); } - (*env)->ReleaseStringUTFChars(env, jPath, path); - char *jsonString = ((JSON_s *)jsonData)->jsonString; jstring jstr = (*env)->NewStringUTF(env, jsonString); json_destroy(&jsonData); + (*env)->ReleaseStringUTFChars(env, jPath, path); + return jstr; } diff --git a/src/disk.c b/src/disk.c index 4baa8f43..7c651dc1 100644 --- a/src/disk.c +++ b/src/disk.c @@ -1126,11 +1126,6 @@ static bool _disk6_loadState(StateHelper_s *helper, JSON_ref *json) { do { if (json != NULL) { - if (!json_createFromString("{}", json)) { - LOG("OOPS, could not create JSON!"); - break; - } - json_mapSetStringValue(*json, "diskA", ""); json_mapSetStringValue(*json, "diskB", ""); json_mapSetBoolValue(*json, "readOnlyA", "true"); diff --git a/src/misc.c b/src/misc.c index 296220e2..41842343 100644 --- a/src/misc.c +++ b/src/misc.c @@ -288,6 +288,7 @@ bool emulator_stateExtractDiskPaths(const char * const path, JSON_ref *json) { do { TEMP_FAILURE_RETRY(fd = open(path, O_RDONLY)); if (fd < 0) { + ERRLOG("OOPS, cannot open path %s", path); break; } assert(fd != 0 && "crazy platform");