VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/libzip/zip_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/libzip/zip_string.c')
-rw-r--r--src/Common/libzip/zip_string.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/Common/libzip/zip_string.c b/src/Common/libzip/zip_string.c
index 1c964491..bb06c1d6 100644
--- a/src/Common/libzip/zip_string.c
+++ b/src/Common/libzip/zip_string.c
@@ -1,6 +1,6 @@
/*
zip_string.c -- string handling (with encoding)
- Copyright (C) 2012-2021 Dieter Baron and Thomas Klausner
+ Copyright (C) 2012-2024 Dieter Baron and Thomas Klausner
This file is part of libzip, a library to manipulate ZIP archives.
The authors can be contacted at <info@libzip.org>
@@ -88,8 +88,10 @@ _zip_string_get(zip_string_t *string, zip_uint32_t *lenp, zip_flags_t flags, zip
if ((flags & ZIP_FL_ENC_RAW) == 0) {
/* start guessing */
- if (string->encoding == ZIP_ENCODING_UNKNOWN)
- _zip_guess_encoding(string, ZIP_ENCODING_UNKNOWN);
+ if (string->encoding == ZIP_ENCODING_UNKNOWN) {
+ /* guess encoding, sets string->encoding */
+ (void)_zip_guess_encoding(string, ZIP_ENCODING_UNKNOWN);
+ }
if (((flags & ZIP_FL_ENC_STRICT) && string->encoding != ZIP_ENCODING_ASCII && string->encoding != ZIP_ENCODING_UTF8_KNOWN) || (string->encoding == ZIP_ENCODING_CP437)) {
if (string->converted == NULL) {
@@ -107,6 +109,20 @@ _zip_string_get(zip_string_t *string, zip_uint32_t *lenp, zip_flags_t flags, zip
return string->raw;
}
+bool _zip_string_is_ascii(const zip_string_t *string) {
+ if (string->encoding != ZIP_ENCODING_ASCII) {
+ zip_uint16_t i;
+
+ for (i = 0; i < string->length; i++) {
+ if (string->raw[i] & 0x80) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
zip_uint16_t
_zip_string_length(const zip_string_t *s) {