Commit 201335f0 authored by abrahambotros's avatar abrahambotros Committed by Matt Apperson
Browse files

Fix src type=nil NSDictionary crash (#455)

- Use NSNull object in NSDictionary when type (or URI) missing from supplied
  src object.
- In addition, defensively supply valid strings for URI and type from JS.
parent 2b709a5d
Loading
Loading
Loading
Loading
+2 −2
Changes for Video.js: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ export default class Video extends Component {
    const resizeMode = this.props.resizeMode;
    const source = resolveAssetSource(this.props.source) || {};

    let uri = source.uri;
    let uri = source.uri || '';
    if (uri && uri.match(/^\//)) {
      uri = `file://${uri}`;
    }
@@ -180,7 +180,7 @@ export default class Video extends Component {
        uri,
        isNetwork,
        isAsset,
        type: source.type,
        type: source.type || '',
        mainVer: source.mainVer || 0,
        patchVer: source.patchVer || 0,
      },
+4 −3
Changes for ios/RCTVideo.m: 4 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -278,14 +278,15 @@ static NSString *const playbackRate = @"rate";
  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    //Perform on next run loop, otherwise onVideoLoadStart is nil
    if(self.onVideoLoadStart) {
      id uri = [source objectForKey:@"uri"];
      id type = [source objectForKey:@"type"];
      self.onVideoLoadStart(@{@"src": @{
                                          @"uri": [source objectForKey:@"uri"],
                                          @"type": [source objectForKey:@"type"],
                                        @"uri": uri ? uri : [NSNull null],
                                        @"type": type ? type : [NSNull null],
                                        @"isNetwork": [NSNumber numberWithBool:(bool)[source objectForKey:@"isNetwork"]]},
                                        @"target": self.reactTag
                                        });
    }

  });
}