From 9fcf50251935f61f5951201de4323d73be25225c Mon Sep 17 00:00:00 2001 From: Nicholas Hurley Date: Mon, 1 Feb 2016 10:03:24 -0800 Subject: [PATCH] Bug 1241896 - Fix netaddr deserialization for AF_UNSPEC and AF_LOCAL. r=mcmanus --- netwerk/ipc/NeckoMessageUtils.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/netwerk/ipc/NeckoMessageUtils.h b/netwerk/ipc/NeckoMessageUtils.h index d2edcb8e842..f99b89df2b8 100644 --- a/netwerk/ipc/NeckoMessageUtils.h +++ b/netwerk/ipc/NeckoMessageUtils.h @@ -108,9 +108,12 @@ struct ParamTraits return false; if (aResult->raw.family == AF_UNSPEC) { - return aMsg->ReadBytes(aIter, - reinterpret_cast(&aResult->raw.data), - sizeof(aResult->raw.data)); + const char *tmp; + if (aMsg->ReadBytes(aIter, &tmp, sizeof(aResult->raw.data))) { + memcpy(&(aResult->raw.data), tmp, sizeof(aResult->raw.data)); + return true; + } + return false; } else if (aResult->raw.family == AF_INET) { return ReadParam(aMsg, aIter, &aResult->inet.port) && ReadParam(aMsg, aIter, &aResult->inet.ip); @@ -122,9 +125,12 @@ struct ParamTraits ReadParam(aMsg, aIter, &aResult->inet6.scope_id); #if defined(XP_UNIX) } else if (aResult->raw.family == AF_LOCAL) { - return aMsg->ReadBytes(aIter, - reinterpret_cast(&aResult->local.path), - sizeof(aResult->local.path)); + const char *tmp; + if (aMsg->ReadBytes(aIter, &tmp, sizeof(aResult->local.path))) { + memcpy(&(aResult->local.path), tmp, sizeof(aResult->local.path)); + return true; + } + return false; #endif }