[PATCH] rpcrt4: compare networkoptions correctly (Coverity) (adjusted)

Marcus Meissner meissner at suse.de
Sun Nov 8 03:08:56 CST 2009


Adjusted after Robs comments, that if one of them NULL, the comparison
should be FALSE,

Ciao, Marcus
---
 dlls/rpcrt4/rpc_assoc.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/dlls/rpcrt4/rpc_assoc.c b/dlls/rpcrt4/rpc_assoc.c
index 117301f..d682451 100644
--- a/dlls/rpcrt4/rpc_assoc.c
+++ b/dlls/rpcrt4/rpc_assoc.c
@@ -84,6 +84,17 @@ static RPC_STATUS RpcAssoc_Alloc(LPCSTR Protseq, LPCSTR NetworkAddr,
     return RPC_S_OK;
 }
 
+static BOOL compare_networkoptions(LPCWSTR opts1, LPCWSTR opts2)
+{
+    if ((opts1 == NULL) && (opts2 == NULL))
+        return TRUE;
+    if ((opts1 == NULL) && (opts2 != NULL))
+        return FALSE;
+    if ((opts1 != NULL) && (opts2 == NULL))
+        return FALSE;
+    return !strcmpW(opts1, opts2);
+}
+
 RPC_STATUS RPCRT4_GetAssociation(LPCSTR Protseq, LPCSTR NetworkAddr,
                                  LPCSTR Endpoint, LPCWSTR NetworkOptions,
                                  RpcAssoc **assoc_out)
@@ -97,8 +108,8 @@ RPC_STATUS RPCRT4_GetAssociation(LPCSTR Protseq, LPCSTR NetworkAddr,
         if (!strcmp(Protseq, assoc->Protseq) &&
             !strcmp(NetworkAddr, assoc->NetworkAddr) &&
             !strcmp(Endpoint, assoc->Endpoint) &&
-            ((!assoc->NetworkOptions && !NetworkOptions) || !strcmpW(NetworkOptions, assoc->NetworkOptions)))
-        {
+            compare_networkoptions(NetworkOptions, assoc->NetworkOptions)
+        ) {
             assoc->refs++;
             *assoc_out = assoc;
             LeaveCriticalSection(&assoc_list_cs);
-- 
1.6.4.2



More information about the wine-patches mailing list