From bff572a7365209f36a16951296384974c80ad3d5 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 18 Nov 2016 13:02:01 +0100 Subject: Harden viewers against failures when loading outlines. Ignore invalid page references in outlines. This was shown by a file that had [null 0 0 1] as a link dest. Attempting to parse that threw an error, which caused the whole outline load to fail. --- platform/android/viewer/jni/mupdf.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'platform/android') diff --git a/platform/android/viewer/jni/mupdf.c b/platform/android/viewer/jni/mupdf.c index 581da497..55bcfb7a 100644 --- a/platform/android/viewer/jni/mupdf.c +++ b/platform/android/viewer/jni/mupdf.c @@ -1212,7 +1212,11 @@ JNI_FN(MuPDFCore_hasOutlineInternal)(JNIEnv * env, jobject thiz) { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; - fz_outline *outline = fz_load_outline(ctx, glo->doc); + fz_outline *outline; + fz_try(ctx) + outline = fz_load_outline(ctx, glo->doc); + fz_catch(ctx) + outline = NULL; fz_drop_outline(glo->ctx, outline); return (outline == NULL) ? JNI_FALSE : JNI_TRUE; @@ -1236,7 +1240,10 @@ JNI_FN(MuPDFCore_getOutlineInternal)(JNIEnv * env, jobject thiz) ctor = (*env)->GetMethodID(env, olClass, "", "(ILjava/lang/String;I)V"); if (ctor == NULL) return NULL; - outline = fz_load_outline(ctx, glo->doc); + fz_try(ctx) + outline = fz_load_outline(ctx, glo->doc); + fz_catch(ctx) + outline = NULL; nItems = countOutlineItems(outline); arr = (*env)->NewObjectArray(env, -- cgit v1.2.3