Skip to content

BlobModule supports invokes virtual method String.equals() on null #18709

@zhaonian

Description

@zhaonian

app breaks after upgrading to RN-0.54 due to exception in native call.

Environment

Environment:
OS: macOS High Sierra 10.13.4
Node: 9.7.1
Yarn: 1.3.2
npm: 5.8.0
Watchman: 4.9.0
Xcode: Xcode 9.3 Build version 9E145
Android Studio: 3.1 AI-173.4670197

Packages: (wanted => installed)
react: ^16.3.0-alpha.1 => 16.3.0-alpha.3
react-native: 0.54.2 => 0.54.2

Steps to Reproduce

  • upgrade to RN 0.54
  • debug in release mode on Android

Expected Behavior

the app should not break

Actual Behavior

04-05 06:43:35.824 20182-20198/com.science.ure E/Surface: getSlotFromBufferLocked: unknown buffer: 0xea08c500
04-05 06:43:37.388 20182-20211/com.science.ure E/unknown:ReactNative: Exception in native call
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
        at com.facebook.react.modules.blob.BlobModule$2.supports(BlobModule.java:83)
        at com.facebook.react.modules.network.NetworkingModule.sendRequest(NetworkingModule.java:257)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:374)
        at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:162)
        at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
        at android.os.Looper.loop(Looper.java:148)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:194)
        at java.lang.Thread.run(Thread.java:818)

image

the line of code that break in BlobModule is:

        boolean isRemote = scheme.equals("http") || scheme.equals("https");

looks like it did not successfully get the scheme, which should be returned by getScheme() from NetworkingModule.

Potential solution:
Add null-checking on scheme? #

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions