________________________________________
From: [email protected] <[email protected]> on 
behalf of Alin Serdean <[email protected]>
Sent: Thursday, July 13, 2017 9:40 PM
To: [email protected]
Subject: [ovs-dev] [PATCH 33/40] 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 <[email protected]>
---
 datapath-windows/ovsext/IpHelper.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

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);
--
2.10.2.windows.1
_______________________________________________

Acked-by: Shashank Ram <[email protected]>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to