diff options
author | Karel Miko <karel.miko@gmail.com> | 2017-02-28 13:19:15 +0100 |
---|---|---|
committer | Karel Miko <karel.miko@gmail.com> | 2017-02-28 13:19:15 +0100 |
commit | 648bd81479893b4124aabc37213cd548093fed71 (patch) | |
tree | 82fb723816f8581cc244fbba675f40a5078a2d27 /src/ltc/pk/asn1 | |
parent | c3227f0a27d290647ec6565ff980eb1f53335f5d (diff) |
wchar_t related warnings
Diffstat (limited to 'src/ltc/pk/asn1')
-rw-r--r-- | src/ltc/pk/asn1/der/utf8/der_encode_utf8_string.c | 9 | ||||
-rw-r--r-- | src/ltc/pk/asn1/der/utf8/der_length_utf8_string.c | 15 |
2 files changed, 18 insertions, 6 deletions
diff --git a/src/ltc/pk/asn1/der/utf8/der_encode_utf8_string.c b/src/ltc/pk/asn1/der/utf8/der_encode_utf8_string.c index 7a782f12..ff04e5fb 100644 --- a/src/ltc/pk/asn1/der/utf8/der_encode_utf8_string.c +++ b/src/ltc/pk/asn1/der/utf8/der_encode_utf8_string.c @@ -37,9 +37,12 @@ int der_encode_utf8_string(const wchar_t *in, unsigned long inlen, /* get the size */ for (x = len = 0; x < inlen; x++) { - if (in[x] < 0 || in[x] > 0x1FFFF) { - return CRYPT_INVALID_ARG; - } +#if !defined(__WCHAR_MAX__) || __WCHAR_MAX__ > 0xFFFF + if (in[x] > 0x10FFFF) return CRYPT_INVALID_ARG; +#endif +#if !defined(__WCHAR_MAX__) || __WCHAR_MAX__ != 0xFFFF && __WCHAR_MAX__ != 0xFFFFFFFF + if (in[x] < 0) return CRYPT_INVALID_ARG; +#endif len += der_utf8_charsize(in[x]); } diff --git a/src/ltc/pk/asn1/der/utf8/der_length_utf8_string.c b/src/ltc/pk/asn1/der/utf8/der_length_utf8_string.c index 3321f945..f8b1a999 100644 --- a/src/ltc/pk/asn1/der/utf8/der_length_utf8_string.c +++ b/src/ltc/pk/asn1/der/utf8/der_length_utf8_string.c @@ -27,11 +27,17 @@ unsigned long der_utf8_charsize(const wchar_t c) return 1; } else if (c <= 0x7FF) { return 2; +#if __WCHAR_MAX__ == 0xFFFF + } else { + return 3; + } +#else } else if (c <= 0xFFFF) { return 3; } else { return 4; } +#endif } /** @@ -50,9 +56,12 @@ int der_length_utf8_string(const wchar_t *in, unsigned long noctets, unsigned lo len = 0; for (x = 0; x < noctets; x++) { - if (in[x] < 0 || in[x] > 0x10FFFF) { - return CRYPT_INVALID_ARG; - } +#if !defined(__WCHAR_MAX__) || __WCHAR_MAX__ > 0xFFFF + if (in[x] > 0x10FFFF) return CRYPT_INVALID_ARG; +#endif +#if !defined(__WCHAR_MAX__) || __WCHAR_MAX__ != 0xFFFF && __WCHAR_MAX__ != 0xFFFFFFFF + if (in[x] < 0) return CRYPT_INVALID_ARG; +#endif len += der_utf8_charsize(in[x]); } |