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 <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
This commit is contained in:
Justin Cohen 2020-03-25 23:02:52 -04:00 committed by Commit Bot
parent d3859d91fd
commit af62d7fcf6

View File

@ -23,6 +23,7 @@
#include "base/mac/mach_logging.h" #include "base/mac/mach_logging.h"
#include "base/numerics/safe_conversions.h" #include "base/numerics/safe_conversions.h"
#include "base/strings/sys_string_conversions.h"
#include "build/build_config.h" #include "build/build_config.h"
namespace { namespace {
@ -160,26 +161,32 @@ void IOSSystemDataCollector::SystemTimeZoneDidChangeNotification() {
[time_zone nextDaylightSavingTimeTransitionAfterDate:[NSDate date]]; [time_zone nextDaylightSavingTimeTransitionAfterDate:[NSDate date]];
if (transition == nil) { if (transition == nil) {
has_next_daylight_saving_time_ = false; has_next_daylight_saving_time_ = false;
daylight_name_ = [[time_zone abbreviation] UTF8String]; is_daylight_saving_time_ = false;
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<int>([time_zone secondsFromGMT]);
standard_offset_seconds_ = standard_offset_seconds_ =
base::saturated_cast<int>([time_zone secondsFromGMTForDate:transition]); base::saturated_cast<int>([time_zone secondsFromGMTForDate:transition]);
daylight_name_ = [[time_zone abbreviation] UTF8String]; standard_name_ = base::SysNSStringToUTF8([time_zone abbreviation]);
standard_name_ = [[time_zone abbreviationForDate:transition] UTF8String]; daylight_offset_seconds_ = standard_offset_seconds_;
daylight_name_ = standard_name_;
} else { } else {
has_next_daylight_saving_time_ = true; has_next_daylight_saving_time_ = true;
is_daylight_saving_time_ = false; is_daylight_saving_time_ = time_zone.isDaylightSavingTime;
standard_name_ = [[time_zone abbreviation] UTF8String]; if (time_zone.isDaylightSavingTime) {
daylight_name_ = [[time_zone abbreviationForDate:transition] UTF8String]; standard_offset_seconds_ = base::saturated_cast<int>(
standard_offset_seconds_ = [time_zone secondsFromGMTForDate:transition]);
base::saturated_cast<int>([time_zone secondsFromGMT]); standard_name_ =
daylight_offset_seconds_ = base::SysNSStringToUTF8([time_zone abbreviationForDate:transition]);
base::saturated_cast<int>([time_zone secondsFromGMTForDate:transition]); daylight_offset_seconds_ =
base::saturated_cast<int>([time_zone secondsFromGMT]);
daylight_name_ = base::SysNSStringToUTF8([time_zone abbreviation]);
} else {
standard_offset_seconds_ =
base::saturated_cast<int>([time_zone secondsFromGMT]);
standard_name_ = base::SysNSStringToUTF8([time_zone abbreviation]);
daylight_offset_seconds_ = base::saturated_cast<int>(
[time_zone secondsFromGMTForDate:transition]);
daylight_name_ =
base::SysNSStringToUTF8([time_zone abbreviationForDate:transition]);
}
} }
} }