From e9132cc34c92f48eb61991047e030fef42a2e6fa Mon Sep 17 00:00:00 2001 From: Philippe Saint-Pierre Date: Mon, 2 Jan 2012 13:54:39 -0500 Subject: [PATCH] Time preferences: use std::nothrow variant of new operator Also make sure to avoid an eventual negative array size. CID 10934. --- src/preferences/time/NetworkTimeView.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/preferences/time/NetworkTimeView.cpp b/src/preferences/time/NetworkTimeView.cpp index 5a9b8aed9e..f5b8297227 100644 --- a/src/preferences/time/NetworkTimeView.cpp +++ b/src/preferences/time/NetworkTimeView.cpp @@ -167,23 +167,24 @@ Settings::SettingsChanged() ssize_t oldSize = fOldMessage.FlattenedSize(); ssize_t newSize = fMessage.FlattenedSize(); - if (oldSize != newSize) + if (oldSize != newSize || oldSize < 0 || newSize < 0) return true; - char* oldBytes = new char[oldSize]; + char* oldBytes = new (std::nothrow) char[oldSize]; + if (oldBytes == NULL) + return true; fOldMessage.Flatten(oldBytes, oldSize); - char* newBytes = new char[newSize]; + char* newBytes = new (std::nothrow) char[newSize]; + if (newBytes == NULL) + return true; fMessage.Flatten(newBytes, newSize); - int result = memcmp(oldBytes, newBytes, oldSize); + int result = memcmp(oldBytes, newBytes, oldSize); delete[] oldBytes; delete[] newBytes; - if (result != 0) - return true; - else - return false; + return result != 0; }