Juan Lang : crypt32: Don't fail if a cert is invalid, Windows doesn' t either (tests to follow).
Alexandre Julliard
julliard at winehq.org
Fri Oct 5 04:55:58 CDT 2007
Module: wine
Branch: master
Commit: 95c2eb5d697a15bbf1930d7afe3319c2ac65825e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=95c2eb5d697a15bbf1930d7afe3319c2ac65825e
Author: Juan Lang <juan.lang at gmail.com>
Date: Thu Oct 4 14:56:04 2007 -0700
crypt32: Don't fail if a cert is invalid, Windows doesn't either (tests to follow).
---
dlls/crypt32/cert.c | 48 +++++++++++++++++++++++-------------------------
1 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c
index 13ef4d4..84d466a 100644
--- a/dlls/crypt32/cert.c
+++ b/dlls/crypt32/cert.c
@@ -1933,7 +1933,7 @@ BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts,
TRACE("(%d, %p, %d, %p, %d)\n", cCerts, rghCerts, *cNumOIDs,
rghOIDs, *pcbOIDs);
- for (i = 0; ret && i < cCerts; i++)
+ for (i = 0; i < cCerts; i++)
{
CERT_ENHKEY_USAGE usage;
DWORD size = sizeof(usage);
@@ -2028,36 +2028,34 @@ BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts,
ret = FALSE;
}
}
- if (ret)
+ ret = TRUE;
+ if (allUsagesValid)
+ {
+ *cNumOIDs = -1;
+ *pcbOIDs = 0;
+ }
+ else
{
- if (allUsagesValid)
+ if (!rghOIDs)
+ *pcbOIDs = cbOIDs;
+ else if (*pcbOIDs < cbOIDs)
{
- *cNumOIDs = -1;
- *pcbOIDs = 0;
+ *pcbOIDs = cbOIDs;
+ SetLastError(ERROR_MORE_DATA);
+ ret = FALSE;
}
else
{
- if (!rghOIDs)
- *pcbOIDs = cbOIDs;
- else if (*pcbOIDs < cbOIDs)
- {
- *pcbOIDs = cbOIDs;
- SetLastError(ERROR_MORE_DATA);
- ret = FALSE;
- }
- else
- {
- LPSTR nextOID = (LPSTR)((LPBYTE)rghOIDs +
- validUsages.cUsageIdentifier * sizeof(LPSTR));
+ LPSTR nextOID = (LPSTR)((LPBYTE)rghOIDs +
+ validUsages.cUsageIdentifier * sizeof(LPSTR));
- *pcbOIDs = cbOIDs;
- *cNumOIDs = validUsages.cUsageIdentifier;
- for (i = 0; i < validUsages.cUsageIdentifier; i++)
- {
- rghOIDs[i] = nextOID;
- lstrcpyA(nextOID, validUsages.rgpszUsageIdentifier[i]);
- nextOID += lstrlenA(nextOID) + 1;
- }
+ *pcbOIDs = cbOIDs;
+ *cNumOIDs = validUsages.cUsageIdentifier;
+ for (i = 0; i < validUsages.cUsageIdentifier; i++)
+ {
+ rghOIDs[i] = nextOID;
+ lstrcpyA(nextOID, validUsages.rgpszUsageIdentifier[i]);
+ nextOID += lstrlenA(nextOID) + 1;
}
}
}
More information about the wine-cvs
mailing list