diff mbox

[ovs-dev,33/40] datapath-windows: Check return status when using APIs

Message ID 20170714044033.15196-34-aserdean@cloudbasesolutions.com
State Accepted
Headers show

Commit Message

Alin Serdean July 14, 2017, 4:40 a.m. UTC
Check the return status of `ConvertInterfaceLuidToAlias` and `RtlStringCbLengthW`
and treat them accordingly.

Also remove unneeded initialization for `interfaceName`.

Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
---
 datapath-windows/ovsext/IpHelper.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/datapath-windows/ovsext/IpHelper.c b/datapath-windows/ovsext/IpHelper.c
index 0af249e..8ade997 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);