Bug 1554559 - P1. Test for invalid arguments. r=kershaw

Will also silence static analysis in phabricator whenever a caller of this code is used.

Differential Revision: https://phabricator.services.mozilla.com/D33419

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Jean-Yves Avenard 2019-06-11 06:29:23 +00:00
parent 83296d7309
commit 638940d1fc

View File

@ -110,6 +110,11 @@ SharedPreferenceDeserializer::~SharedPreferenceDeserializer() {
bool SharedPreferenceDeserializer::DeserializeFromSharedMemory(
char* aPrefsHandleStr, char* aPrefMapHandleStr, char* aPrefsLenStr,
char* aPrefMapSizeStr) {
#ifdef XP_WIN
MOZ_ASSERT(aPrefsHandleStr && aPrefMapHandleStr, "Can't be null");
#endif
MOZ_ASSERT(aPrefsLenStr && aPrefMapSizeStr, "Can't be null");
// Parses an arg containing a pointer-sized-integer.
auto parseUIntPtrArg = [](char*& aArg) {
// ContentParent uses %zu to print a word-sized unsigned integer. So
@ -124,7 +129,7 @@ bool SharedPreferenceDeserializer::DeserializeFromSharedMemory(
};
mPrefsHandle = Some(parseHandleArg(aPrefsHandleStr));
if (aPrefsHandleStr[0] != '\0') {
if (!aPrefsHandleStr || aPrefsHandleStr[0] != '\0') {
return false;
}
@ -133,7 +138,7 @@ bool SharedPreferenceDeserializer::DeserializeFromSharedMemory(
// closed.
FileDescriptor::UniquePlatformHandle handle(
parseHandleArg(aPrefMapHandleStr));
if (aPrefMapHandleStr[0] != '\0') {
if (!aPrefMapHandleStr || aPrefMapHandleStr[0] != '\0') {
return false;
}
@ -141,12 +146,12 @@ bool SharedPreferenceDeserializer::DeserializeFromSharedMemory(
#endif
mPrefsLen = Some(parseUIntPtrArg(aPrefsLenStr));
if (aPrefsLenStr[0] != '\0') {
if (!aPrefsLenStr || aPrefsLenStr[0] != '\0') {
return false;
}
mPrefMapSize = Some(parseUIntPtrArg(aPrefMapSizeStr));
if (aPrefMapSizeStr[0] != '\0') {
if (!aPrefMapSizeStr || aPrefMapSizeStr[0] != '\0') {
return false;
}