Bug 1241896 - Fix netaddr deserialization for AF_UNSPEC and AF_LOCAL. r=mcmanus

This commit is contained in:
Nicholas Hurley 2016-02-01 10:03:24 -08:00
parent 46391970ed
commit 9fcf502519

View File

@ -108,9 +108,12 @@ struct ParamTraits<mozilla::net::NetAddr>
return false; return false;
if (aResult->raw.family == AF_UNSPEC) { if (aResult->raw.family == AF_UNSPEC) {
return aMsg->ReadBytes(aIter, const char *tmp;
reinterpret_cast<const char**>(&aResult->raw.data), if (aMsg->ReadBytes(aIter, &tmp, sizeof(aResult->raw.data))) {
sizeof(aResult->raw.data)); memcpy(&(aResult->raw.data), tmp, sizeof(aResult->raw.data));
return true;
}
return false;
} else if (aResult->raw.family == AF_INET) { } else if (aResult->raw.family == AF_INET) {
return ReadParam(aMsg, aIter, &aResult->inet.port) && return ReadParam(aMsg, aIter, &aResult->inet.port) &&
ReadParam(aMsg, aIter, &aResult->inet.ip); ReadParam(aMsg, aIter, &aResult->inet.ip);
@ -122,9 +125,12 @@ struct ParamTraits<mozilla::net::NetAddr>
ReadParam(aMsg, aIter, &aResult->inet6.scope_id); ReadParam(aMsg, aIter, &aResult->inet6.scope_id);
#if defined(XP_UNIX) #if defined(XP_UNIX)
} else if (aResult->raw.family == AF_LOCAL) { } else if (aResult->raw.family == AF_LOCAL) {
return aMsg->ReadBytes(aIter, const char *tmp;
reinterpret_cast<const char**>(&aResult->local.path), if (aMsg->ReadBytes(aIter, &tmp, sizeof(aResult->local.path))) {
sizeof(aResult->local.path)); memcpy(&(aResult->local.path), tmp, sizeof(aResult->local.path));
return true;
}
return false;
#endif #endif
} }