From af62d7fcf61da5a8a6bb9336f0b5ee22547d36a7 Mon Sep 17 00:00:00 2001 From: Justin Cohen Date: Wed, 25 Mar 2020 23:02:52 -0400 Subject: [PATCH] Correct use of -[NSString UTF8String]. Fixes the chromium presubmit error for UTF8String: The use of -[NSString UTF8String] is dangerous as it can return null even if |canBeConvertedToEncoding:NSUTF8StringEncoding| returns YES. Please use |SysNSStringToUTF8| instead. Bug: crashpad:31 Change-Id: Iaf939012ea9d342f6a01af58119cef962319aefe Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2119613 Reviewed-by: Mark Mentovai Commit-Queue: Justin Cohen --- util/ios/ios_system_data_collector.mm | 39 ++++++++++++++++----------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/util/ios/ios_system_data_collector.mm b/util/ios/ios_system_data_collector.mm index ca6e91b8..c81fe3f8 100644 --- a/util/ios/ios_system_data_collector.mm +++ b/util/ios/ios_system_data_collector.mm @@ -23,6 +23,7 @@ #include "base/mac/mach_logging.h" #include "base/numerics/safe_conversions.h" +#include "base/strings/sys_string_conversions.h" #include "build/build_config.h" namespace { @@ -160,26 +161,32 @@ void IOSSystemDataCollector::SystemTimeZoneDidChangeNotification() { [time_zone nextDaylightSavingTimeTransitionAfterDate:[NSDate date]]; if (transition == nil) { has_next_daylight_saving_time_ = false; - daylight_name_ = [[time_zone abbreviation] UTF8String]; - standard_name_ = daylight_name_; - } else if (time_zone.isDaylightSavingTime) { - has_next_daylight_saving_time_ = true; - is_daylight_saving_time_ = true; - daylight_offset_seconds_ = - base::saturated_cast([time_zone secondsFromGMT]); + is_daylight_saving_time_ = false; standard_offset_seconds_ = base::saturated_cast([time_zone secondsFromGMTForDate:transition]); - daylight_name_ = [[time_zone abbreviation] UTF8String]; - standard_name_ = [[time_zone abbreviationForDate:transition] UTF8String]; + standard_name_ = base::SysNSStringToUTF8([time_zone abbreviation]); + daylight_offset_seconds_ = standard_offset_seconds_; + daylight_name_ = standard_name_; } else { has_next_daylight_saving_time_ = true; - is_daylight_saving_time_ = false; - standard_name_ = [[time_zone abbreviation] UTF8String]; - daylight_name_ = [[time_zone abbreviationForDate:transition] UTF8String]; - standard_offset_seconds_ = - base::saturated_cast([time_zone secondsFromGMT]); - daylight_offset_seconds_ = - base::saturated_cast([time_zone secondsFromGMTForDate:transition]); + is_daylight_saving_time_ = time_zone.isDaylightSavingTime; + if (time_zone.isDaylightSavingTime) { + standard_offset_seconds_ = base::saturated_cast( + [time_zone secondsFromGMTForDate:transition]); + standard_name_ = + base::SysNSStringToUTF8([time_zone abbreviationForDate:transition]); + daylight_offset_seconds_ = + base::saturated_cast([time_zone secondsFromGMT]); + daylight_name_ = base::SysNSStringToUTF8([time_zone abbreviation]); + } else { + standard_offset_seconds_ = + base::saturated_cast([time_zone secondsFromGMT]); + standard_name_ = base::SysNSStringToUTF8([time_zone abbreviation]); + daylight_offset_seconds_ = base::saturated_cast( + [time_zone secondsFromGMTForDate:transition]); + daylight_name_ = + base::SysNSStringToUTF8([time_zone abbreviationForDate:transition]); + } } }