From 3630a2f321226bce0306c6a8834812a0dd4dc88f Mon Sep 17 00:00:00 2001 From: Alin Serdean Date: Fri, 14 Jul 2017 04:40:57 +0000 Subject: datapath-windows: Check return status when using APIs Check the return status of `ConvertInterfaceLuidToAlias` and `RtlStringCbLengthW` and treat them accordingly. Also remove unneeded initialization for `interfaceName`. Signed-off-by: Alin Gabriel Serdean Signed-off-by: Ben Pfaff Acked-by: Shashank Ram --- datapath-windows/ovsext/IpHelper.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'datapath-windows') diff --git a/datapath-windows/ovsext/IpHelper.c b/datapath-windows/ovsext/IpHelper.c index 3021c3c6a..548833d2a 100644 --- a/datapath-windows/ovsext/IpHelper.c +++ b/datapath-windows/ovsext/IpHelper.c @@ -369,7 +369,7 @@ OvsGetRoute(SOCKADDR_INET *destinationAddress, SOCKADDR_INET crtSrcAddr = { 0 }; MIB_IPFORWARD_ROW2 crtRoute = { 0 }; POVS_IPHELPER_INSTANCE crtInstance = NULL; - WCHAR interfaceName[IF_MAX_STRING_SIZE + 1] = { 0 }; + WCHAR interfaceName[IF_MAX_STRING_SIZE + 1]; crtInstance = CONTAINING_RECORD(link, OVS_IPHELPER_INSTANCE, link); @@ -394,11 +394,16 @@ OvsGetRoute(SOCKADDR_INET *destinationAddress, RtlCopyMemory(route, &crtRoute, sizeof(*route)); *instance = crtInstance; - ConvertInterfaceLuidToAlias(&crtInstance->internalRow.InterfaceLuid, - interfaceName, IF_MAX_STRING_SIZE + 1); - RtlStringCbLengthW(interfaceName, IF_MAX_STRING_SIZE, &len); + status = + ConvertInterfaceLuidToAlias(&crtInstance->internalRow.InterfaceLuid, + interfaceName, + IF_MAX_STRING_SIZE + 1); + if (NT_SUCCESS(status)) { + status = RtlStringCbLengthW(interfaceName, IF_MAX_STRING_SIZE, + &len); + } - if (gOvsSwitchContext != NULL) { + if (gOvsSwitchContext != NULL && NT_SUCCESS(status)) { NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0); *vport = OvsFindVportByHvNameW(gOvsSwitchContext, @@ -608,11 +613,11 @@ OvsAddIpInterfaceNotification(PMIB_IPINTERFACE_ROW ipRow) InitializeListHead(&instance->link); ExInitializeResourceLite(&instance->lock); - WCHAR interfaceName[IF_MAX_STRING_SIZE + 1] = { 0 }; + WCHAR interfaceName[IF_MAX_STRING_SIZE + 1]; status = ConvertInterfaceLuidToAlias(&ipRow->InterfaceLuid, interfaceName, IF_MAX_STRING_SIZE + 1); - if (gOvsSwitchContext == NULL) { + if (gOvsSwitchContext == NULL || !NT_SUCCESS(status)) { goto error; } NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0); -- cgit v1.2.1