Skip to content

Commit ca5d1ae

Browse files
yeshuangFacebook Github Bot 8
authored andcommitted
Defend against nil pointer in RCTImageLoader.m
Summary: Defend against nil pointer in RCTImageLoader.m. In some rare case, the "response" might be nil, and this would lead to crash. This issue is related: #6952 Closes #8141 Differential Revision: D3579427 Pulled By: javache fbshipit-source-id: 7b71768a0c6d74a42d280b1d54adda86b493f0ef
1 parent df8c88e commit ca5d1ae

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

‎Libraries/Image/RCTImageLoader.m‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,9 @@ - (RCTImageLoaderCancellationBlock)_loadURLRequest:(NSURLRequest *)request
382382
if (error) {
383383
completionHandler(error, nil);
384384
return;
385+
} else if (!response) {
386+
completionHandler(RCTErrorWithMessage(@"Response metadata error"), nil);
387+
return;
385388
} else if (!data) {
386389
completionHandler(RCTErrorWithMessage(@"Unknown image download error"), nil);
387390
return;
@@ -435,8 +438,16 @@ - (RCTImageLoaderCancellationBlock)_loadURLRequest:(NSURLRequest *)request
435438
// Download image
436439
__weak __typeof(self) weakSelf = self;
437440
RCTNetworkTask *task = [networking networkTaskWithRequest:request completionBlock:^(NSURLResponse *response, NSData *data, NSError *error) {
438-
if (error) {
439-
completionHandler(error, nil);
441+
if (error || !response || !data) {
442+
NSError *someError = nil;
443+
if (error) {
444+
someError = error;
445+
} else if (!response) {
446+
someError = RCTErrorWithMessage(@"Response metadata error");
447+
} else {
448+
someError = RCTErrorWithMessage(@"Unknown image download error");
449+
}
450+
completionHandler(someError, nil);
440451
[weakSelf dequeueTasks];
441452
return;
442453
}

0 commit comments

Comments
 (0)