X-Git-Url: http://git.annexia.org/?p=hivex.git;a=blobdiff_plain;f=lib%2Fhivex.c;h=d2ab23d30e0aed122112c4c9d68fa075a19fe5f4;hp=b1f6ea69954ae794d4ed7b19b19092d1db151c14;hb=53056244696385299fe0d298bd25053dd7c07dc0;hpb=c22ed5a6cb58aff70bf74df5b7c1edd33d796ef4 diff --git a/lib/hivex.c b/lib/hivex.c index b1f6ea6..d2ab23d 100644 --- a/lib/hivex.c +++ b/lib/hivex.c @@ -1384,7 +1384,7 @@ utf16_string_len_in_bytes_max (const char *str, size_t len) { size_t ret = 0; - while (len > 0 && (str[0] || str[1])) { + while (len >= 2 && (str[0] || str[1])) { str += 2; ret += 2; len -= 2; @@ -1421,7 +1421,8 @@ hivex_value_multiple_strings (hive_h *h, hive_value_h value) char *p = data; size_t plen; - while (p < data + len && (plen = utf16_string_len_in_bytes (p)) > 0) { + while (p < data + len && + (plen = utf16_string_len_in_bytes_max (p, data + len - p)) > 0) { nr_strings++; char **ret2 = realloc (ret, (1 + nr_strings) * sizeof (char *)); if (ret2 == NULL) {