diff options
Diffstat (limited to 'mobile/android/geckoview/src/main/java/org/mozilla/geckoview/ContentInputStream.java')
-rw-r--r-- | mobile/android/geckoview/src/main/java/org/mozilla/geckoview/ContentInputStream.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/ContentInputStream.java b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/ContentInputStream.java index aa3f5c3174..bc9eff98f0 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/ContentInputStream.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/ContentInputStream.java @@ -37,6 +37,11 @@ import org.mozilla.gecko.annotation.WrapForJNI; try { mFd = cr.openAssetFileDescriptor(uri, "r"); + if (mFd == null) { + Log.e(LOGTAG, "Cannot open the uri: " + aUri + " (no file descriptor)"); + close(); + return; + } setInputStream(mFd.createInputStream()); if (!checkHeaders(HEADERS)) { @@ -127,7 +132,17 @@ import org.mozilla.gecko.annotation.WrapForJNI; || isExported(context, uri) || wasGrantedPermission(context, uri)) { final ContentResolver cr = context.getContentResolver(); - cr.openAssetFileDescriptor(uri, "r").close(); + if (cr == null) { + Log.e(LOGTAG, "No content resolver"); + return false; + } + final AssetFileDescriptor fd = cr.openAssetFileDescriptor(uri, "r"); + if (fd == null) { + // The descriptor can be null because the provider crashed. + Log.e(LOGTAG, "No asset file descriptor"); + return false; + } + fd.close(); Log.d(LOGTAG, "The uri is readable: " + uri); return true; } |