From 9ed2bd628555109a50c5a31fcb5a5a8890a67ed4 Mon Sep 17 00:00:00 2001 From: Nick Lockwood Date: Tue, 23 Jun 2015 05:17:36 -0700 Subject: [PATCH] Fixed nil safety issue in RKSounds --- React/Base/RCTConvert.h | 6 ++++++ React/Base/RCTConvert.m | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/React/Base/RCTConvert.h b/React/Base/RCTConvert.h index 145e88b21..e96e4562d 100644 --- a/React/Base/RCTConvert.h +++ b/React/Base/RCTConvert.h @@ -46,6 +46,9 @@ + (NSURL *)NSURL:(id)json; + (NSURLRequest *)NSURLRequest:(id)json; +typedef NSURL RCTFileURL; ++ (RCTFileURL *)RCTFileURL:(id)json; + + (NSDate *)NSDate:(id)json; + (NSTimeZone *)NSTimeZone:(id)json; + (NSTimeInterval)NSTimeInterval:(id)json; @@ -95,6 +98,9 @@ typedef NSArray NSDictionaryArray; typedef NSArray NSURLArray; + (NSURLArray *)NSURLArray:(id)json; +typedef NSArray RCTFileURLArray; ++ (RCTFileURLArray *)RCTFileURLArray:(id)json; + typedef NSArray NSNumberArray; + (NSNumberArray *)NSNumberArray:(id)json; diff --git a/React/Base/RCTConvert.m b/React/Base/RCTConvert.m index 804faf87e..201b783cb 100644 --- a/React/Base/RCTConvert.m +++ b/React/Base/RCTConvert.m @@ -122,6 +122,20 @@ RCT_CONVERTER(NSString *, NSString, description) return URL ? [NSURLRequest requestWithURL:URL] : nil; } ++ (RCTFileURL *)RCTFileURL:(id)json +{ + NSURL *fileURL = [self NSURL:json]; + if (![fileURL isFileURL]) { + RCTLogError(@"URI must be a local file, '%@' isn't.", fileURL); + return nil; + } + if (![[NSFileManager defaultManager] fileExistsAtPath:fileURL.path]) { + RCTLogError(@"File '%@' could not be found.", fileURL); + return nil; + } + return fileURL; +} + + (NSDate *)NSDate:(id)json { if ([json isKindOfClass:[NSNumber class]]) { @@ -854,6 +868,7 @@ NSArray *RCTConvertArrayValue(SEL type, id json) RCT_ARRAY_CONVERTER(NSString) RCT_ARRAY_CONVERTER(NSDictionary) RCT_ARRAY_CONVERTER(NSURL) +RCT_ARRAY_CONVERTER(RCTFileURL) RCT_ARRAY_CONVERTER(NSNumber) RCT_ARRAY_CONVERTER(UIColor)