crypt32 2: Simplify CRYPT_AsnDecodeUnicodeNameValueInternal,
getting rid of a warning
James Hawkins
truiken at gmail.com
Wed Aug 30 16:08:38 CDT 2006
Hi,
Changelog:
* Simplify CRYPT_AsnDecodeUnicodeNameValueInternal, getting rid of a warning.
dlls/crypt32/decode.c | 104 ++++++++++++++++++++++++-------------------------
1 files changed, 51 insertions(+), 53 deletions(-)
--
James Hawkins
-------------- next part --------------
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;
--
1.4.2
More information about the wine-patches
mailing list