Module: wine Branch: master Commit: 382d06794b40391b0cf7961dec89260735897dde URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=382d06794b40391b0cf7961d...
Author: James Hawkins truiken@gmail.com Date: Wed Aug 30 14:08:38 2006 -0700
crypt32: Simplify CRYPT_AsnDecodeUnicodeNameValueInternal, getting rid of a warning.
---
dlls/crypt32/decode.c | 104 ++++++++++++++++++++++++------------------------- 1 files changed, 51 insertions(+), 53 deletions(-)
diff --git a/dlls/crypt32/decode.c b/dlls/crypt32/decode.c index d1e4006..4e20de4 100644 --- a/dlls/crypt32/decode.c +++ b/dlls/crypt32/decode.c @@ -1511,67 +1511,65 @@ static BOOL WINAPI CRYPT_AsnDecodeUnicod break; default: SetLastError(CRYPT_E_ASN1_BADTAG); + return FALSE; + } + + if (!value) + *pcbStructInfo = bytesNeeded; + else if (*pcbStructInfo < bytesNeeded) + { + *pcbStructInfo = bytesNeeded; + SetLastError(ERROR_MORE_DATA); ret = FALSE; } - if (ret) + else { - if (!value) - *pcbStructInfo = bytesNeeded; - else if (*pcbStructInfo < bytesNeeded) - { - *pcbStructInfo = bytesNeeded; - SetLastError(ERROR_MORE_DATA); - ret = FALSE; - } - else + *pcbStructInfo = bytesNeeded; + value->dwValueType = valueType; + if (dataLen) { - *pcbStructInfo = bytesNeeded; - value->dwValueType = valueType; - if (dataLen) - { - DWORD i; - LPWSTR str = (LPWSTR)value->Value.pbData; + DWORD i; + LPWSTR str = (LPWSTR)value->Value.pbData;
- assert(value->Value.pbData); - switch (pbEncoded[0]) - { - case ASN_NUMERICSTRING: - case ASN_PRINTABLESTRING: - case ASN_IA5STRING: - case ASN_T61STRING: - case ASN_VIDEOTEXSTRING: - case ASN_GRAPHICSTRING: - case ASN_VISIBLESTRING: - case ASN_GENERALSTRING: - value->Value.cbData = dataLen * 2; - for (i = 0; i < dataLen; i++) - str[i] = pbEncoded[1 + lenBytes + i]; - break; - case ASN_UNIVERSALSTRING: - value->Value.cbData = dataLen / 2; - for (i = 0; i < dataLen / 4; i++) - str[i] = (pbEncoded[1 + lenBytes + 2 * i + 2] << 8) - | pbEncoded[1 + lenBytes + 2 * i + 3]; - break; - case ASN_BMPSTRING: - value->Value.cbData = dataLen; - for (i = 0; i < dataLen / 2; i++) - str[i] = (pbEncoded[1 + lenBytes + 2 * i] << 8) | - pbEncoded[1 + lenBytes + 2 * i + 1]; - break; - case ASN_UTF8STRING: - value->Value.cbData = MultiByteToWideChar(CP_UTF8, 0, - (LPSTR)pbEncoded + 1 + lenBytes, dataLen, - str, bytesNeeded - sizeof(CERT_NAME_VALUE)) * 2; - break; - } - } - else + assert(value->Value.pbData); + switch (pbEncoded[0]) { - value->Value.cbData = 0; - value->Value.pbData = NULL; + case ASN_NUMERICSTRING: + case ASN_PRINTABLESTRING: + case ASN_IA5STRING: + case ASN_T61STRING: + case ASN_VIDEOTEXSTRING: + case ASN_GRAPHICSTRING: + case ASN_VISIBLESTRING: + case ASN_GENERALSTRING: + value->Value.cbData = dataLen * 2; + for (i = 0; i < dataLen; i++) + str[i] = pbEncoded[1 + lenBytes + i]; + break; + case ASN_UNIVERSALSTRING: + value->Value.cbData = dataLen / 2; + for (i = 0; i < dataLen / 4; i++) + str[i] = (pbEncoded[1 + lenBytes + 2 * i + 2] << 8) + | pbEncoded[1 + lenBytes + 2 * i + 3]; + break; + case ASN_BMPSTRING: + value->Value.cbData = dataLen; + for (i = 0; i < dataLen / 2; i++) + str[i] = (pbEncoded[1 + lenBytes + 2 * i] << 8) | + pbEncoded[1 + lenBytes + 2 * i + 1]; + break; + case ASN_UTF8STRING: + value->Value.cbData = MultiByteToWideChar(CP_UTF8, 0, + (LPSTR)pbEncoded + 1 + lenBytes, dataLen, + str, bytesNeeded - sizeof(CERT_NAME_VALUE)) * 2; + break; } } + else + { + value->Value.cbData = 0; + value->Value.pbData = NULL; + } } } return ret;