summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/IpHelper.c
diff options
context:
space:
mode:
authorAlin Serdean <aserdean@cloudbasesolutions.com>2017-07-14 04:40:57 +0000
committerBen Pfaff <blp@ovn.org>2017-08-02 11:32:07 -0700
commit1c5875f7d9d7dd93aa319265fdeaf971c871b010 (patch)
tree252692db0c1d78890020a193baa08b2c122fecea /datapath-windows/ovsext/IpHelper.c
parentf0aeea81bd27f1d757df531890bbf0ad3bbbc111 (diff)
downloadopenvswitch-1c5875f7d9d7dd93aa319265fdeaf971c871b010.tar.gz
datapath-windows: fix excessive stack usage in iphelper
`OvsGetOrResolveIPNeigh` uses a stack over 1024 bytes. Switch one parameter to be a pointer. Found using WDK 8.1 static code analysis. Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Shashank Ram <rams@vmware.com>
Diffstat (limited to 'datapath-windows/ovsext/IpHelper.c')
-rw-r--r--datapath-windows/ovsext/IpHelper.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/datapath-windows/ovsext/IpHelper.c b/datapath-windows/ovsext/IpHelper.c
index 555351a5c..3021c3c6a 100644
--- a/datapath-windows/ovsext/IpHelper.c
+++ b/datapath-windows/ovsext/IpHelper.c
@@ -485,7 +485,7 @@ OvsResolveIPNeighEntry(PMIB_IPNET_ROW2 ipNeigh)
NTSTATUS
-OvsGetOrResolveIPNeigh(MIB_IF_ROW2 ipRow,
+OvsGetOrResolveIPNeigh(PMIB_IF_ROW2 ipRow,
UINT32 ipAddr,
PMIB_IPNET_ROW2 ipNeigh)
{
@@ -494,8 +494,8 @@ OvsGetOrResolveIPNeigh(MIB_IF_ROW2 ipRow,
ASSERT(ipNeigh);
RtlZeroMemory(ipNeigh, sizeof (*ipNeigh));
- ipNeigh->InterfaceLuid.Value = ipRow.InterfaceLuid.Value;
- ipNeigh->InterfaceIndex = ipRow.InterfaceIndex;
+ ipNeigh->InterfaceLuid.Value = ipRow->InterfaceLuid.Value;
+ ipNeigh->InterfaceIndex = ipRow->InterfaceIndex;
ipNeigh->Address.si_family = AF_INET;
ipNeigh->Address.Ipv4.sin_addr.s_addr = ipAddr;
@@ -503,8 +503,8 @@ OvsGetOrResolveIPNeigh(MIB_IF_ROW2 ipRow,
if (status != STATUS_SUCCESS) {
RtlZeroMemory(ipNeigh, sizeof (*ipNeigh));
- ipNeigh->InterfaceLuid.Value = ipRow.InterfaceLuid.Value;
- ipNeigh->InterfaceIndex = ipRow.InterfaceIndex;
+ ipNeigh->InterfaceLuid.Value = ipRow->InterfaceLuid.Value;
+ ipNeigh->InterfaceIndex = ipRow->InterfaceIndex;
ipNeigh->Address.si_family = AF_INET;
ipNeigh->Address.Ipv4.sin_addr.s_addr = ipAddr;
status = OvsResolveIPNeighEntry(ipNeigh);
@@ -1643,7 +1643,7 @@ OvsHandleFwdRequest(POVS_IP_HELPER_REQUEST request)
if (ipAddr == 0) {
ipAddr = request->fwdReq.tunnelKey.dst;
}
- status = OvsGetOrResolveIPNeigh(instance->internalRow,
+ status = OvsGetOrResolveIPNeigh(&instance->internalRow,
ipAddr, &ipNeigh);
if (status != STATUS_SUCCESS) {
ExReleaseResourceLite(&instance->lock);
@@ -1935,11 +1935,10 @@ OvsStartIpHelper(PVOID data)
MIB_IPNET_ROW2 ipNeigh;
NTSTATUS status;
POVS_IPHELPER_INSTANCE instance = (POVS_IPHELPER_INSTANCE)ipn->context;
- MIB_IF_ROW2 internalRow = instance->internalRow;
NdisReleaseSpinLock(&ovsIpHelperLock);
ExAcquireResourceExclusiveLite(&ovsInstanceListLock, TRUE);
- status = OvsGetOrResolveIPNeigh(internalRow,
+ status = OvsGetOrResolveIPNeigh(&instance->internalRow,
ipAddr, &ipNeigh);
OvsUpdateIPNeighEntry(ipAddr, &ipNeigh, status);