summaryrefslogtreecommitdiff
path: root/src/ltc/pk/asn1
diff options
context:
space:
mode:
authorKarel Miko <karel.miko@gmail.com>2017-02-28 13:19:15 +0100
committerKarel Miko <karel.miko@gmail.com>2017-02-28 13:19:15 +0100
commit648bd81479893b4124aabc37213cd548093fed71 (patch)
tree82fb723816f8581cc244fbba675f40a5078a2d27 /src/ltc/pk/asn1
parentc3227f0a27d290647ec6565ff980eb1f53335f5d (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.c9
-rw-r--r--src/ltc/pk/asn1/der/utf8/der_length_utf8_string.c15
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]);
}