diff options
| -rw-r--r-- | layers/vk_layer_utils.cpp | 5 | ||||
| -rw-r--r-- | loader/loader.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/layers/vk_layer_utils.cpp b/layers/vk_layer_utils.cpp index 4ad1989b..8d912d71 100644 --- a/layers/vk_layer_utils.cpp +++ b/layers/vk_layer_utils.cpp @@ -695,9 +695,12 @@ VK_LAYER_EXPORT VkStringErrorFlags vk_string_validate(const int max_length, cons int num_char_bytes = 0; int i, j; - for (i = 0; i < max_length; i++) { + for (i = 0; i <= max_length; i++) { if (utf8[i] == 0) { break; + } else if (i == max_length) { + result = VK_STRING_ERROR_LENGTH; + break; } else if ((utf8[i] >= 0xa) && (utf8[i] < 0x7f)) { num_char_bytes = 0; } else if ((utf8[i] & UTF8_ONE_BYTE_MASK) == UTF8_ONE_BYTE_CODE) { diff --git a/loader/loader.c b/loader/loader.c index 2ed52c4b..4061cd55 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -4752,9 +4752,12 @@ VkStringErrorFlags vk_string_validate(const int max_length, const char *utf8) { int num_char_bytes = 0; int i, j; - for (i = 0; i < max_length; i++) { + for (i = 0; i <= max_length; i++) { if (utf8[i] == 0) { break; + } else if (i == max_length) { + result |= VK_STRING_ERROR_LENGTH; + break; } else if ((utf8[i] >= 0x20) && (utf8[i] < 0x7f)) { num_char_bytes = 0; } else if ((utf8[i] & UTF8_ONE_BYTE_MASK) == UTF8_ONE_BYTE_CODE) { |
