Module: wine Branch: master Commit: 95c2eb5d697a15bbf1930d7afe3319c2ac65825e URL: http://source.winehq.org/git/wine.git/?a=commit;h=95c2eb5d697a15bbf1930d7afe...
Author: Juan Lang juan.lang@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; } } }