diff options
Diffstat (limited to 'libarchive/archive_string.c')
-rw-r--r-- | libarchive/archive_string.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libarchive/archive_string.c b/libarchive/archive_string.c index 3d4be825..4db842fb 100644 --- a/libarchive/archive_string.c +++ b/libarchive/archive_string.c @@ -4152,8 +4152,8 @@ archive_mstring_copy_mbs_len_l(struct archive_mstring *aes, * usable values even if some of the character conversions are failing.) */ int -archive_mstring_update_utf8(struct archive *a, struct archive_mstring *aes, - const char *utf8) +archive_mstring_update_utf8_len(struct archive *a, struct archive_mstring *aes, + const char *utf8, size_t length) { struct archive_string_conv *sc; int r; @@ -4164,7 +4164,7 @@ archive_mstring_update_utf8(struct archive *a, struct archive_mstring *aes, } /* Save the UTF8 string. */ - archive_strcpy(&(aes->aes_utf8), utf8); + archive_strncpy(&(aes->aes_utf8), utf8, length); /* Empty the mbs and wcs strings. */ archive_string_empty(&(aes->aes_mbs)); @@ -4176,7 +4176,7 @@ archive_mstring_update_utf8(struct archive *a, struct archive_mstring *aes, sc = archive_string_conversion_from_charset(a, "UTF-8", 1); if (sc == NULL) return (-1);/* Couldn't allocate memory for sc. */ - r = archive_strcpy_l(&(aes->aes_mbs), utf8, sc); + r = archive_strncpy_l(&(aes->aes_mbs), utf8, length, sc); if (a == NULL) free_sconv_object(sc); if (r != 0) |