[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