mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix crash in folly object conversion
Summary: Due to invalid utf-8 data NSString may return nil during initialisation and this leads to crash when nil goes to NSDictionary or NSArray Changelog: [Internal] Differential Revision: D36623628 fbshipit-source-id: 23efad87cc9fe4a23c5e90dad63e0d74036b62fa
This commit is contained in:
committed by
Facebook GitHub Bot
parent
c006722e6c
commit
a70968807b
@@ -31,15 +31,22 @@ id convertFollyDynamicToId(const folly::dynamic &dyn)
|
||||
return [[NSString alloc] initWithBytes:dyn.c_str() length:dyn.size() encoding:NSUTF8StringEncoding];
|
||||
case folly::dynamic::ARRAY: {
|
||||
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:dyn.size()];
|
||||
for (auto &elem : dyn) {
|
||||
[array addObject:convertFollyDynamicToId(elem)];
|
||||
for (const auto &elem : dyn) {
|
||||
id value = convertFollyDynamicToId(elem);
|
||||
if (value) {
|
||||
[array addObject:value];
|
||||
}
|
||||
}
|
||||
return array;
|
||||
}
|
||||
case folly::dynamic::OBJECT: {
|
||||
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:dyn.size()];
|
||||
for (auto &elem : dyn.items()) {
|
||||
dict[convertFollyDynamicToId(elem.first)] = convertFollyDynamicToId(elem.second);
|
||||
for (const auto &elem : dyn.items()) {
|
||||
id key = convertFollyDynamicToId(elem.first);
|
||||
id value = convertFollyDynamicToId(elem.second);
|
||||
if (key && value) {
|
||||
dict[key] = value;
|
||||
}
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user