VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/libzip/zip_error_strerror.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/libzip/zip_error_strerror.c')
-rw-r--r--src/Common/libzip/zip_error_strerror.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/Common/libzip/zip_error_strerror.c b/src/Common/libzip/zip_error_strerror.c
index fe04cbb4..5be54b38 100644
--- a/src/Common/libzip/zip_error_strerror.c
+++ b/src/Common/libzip/zip_error_strerror.c
@@ -1,6 +1,6 @@
/*
zip_error_sterror.c -- get string representation of struct zip_error
- Copyright (C) 1999-2021 Dieter Baron and Thomas Klausner
+ Copyright (C) 1999-2023 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>
@@ -49,6 +49,9 @@ zip_error_strerror(zip_error_t *err) {
if (err->zip_err < 0 || err->zip_err >= _zip_err_str_count) {
system_error_buffer = (char *)malloc(128);
+ if (system_error_buffer == NULL) {
+ return _zip_err_str[ZIP_ER_MEMORY].description;
+ }
snprintf_s(system_error_buffer, 128, "Unknown error %d", err->zip_err);
system_error_buffer[128 - 1] = '\0'; /* make sure string is NUL-terminated */
zip_error_string = NULL;
@@ -61,6 +64,9 @@ zip_error_strerror(zip_error_t *err) {
case ZIP_ET_SYS: {
size_t len = strerrorlen_s(err->sys_err) + 1;
system_error_buffer = malloc(len);
+ if (system_error_buffer == NULL) {
+ return _zip_err_str[ZIP_ER_MEMORY].description;
+ }
strerror_s(system_error_buffer, len, err->sys_err);
system_error_string = system_error_buffer;
break;
@@ -79,12 +85,18 @@ zip_error_strerror(zip_error_t *err) {
}
else if (error >= _zip_err_details_count) {
system_error_buffer = (char *)malloc(128);
+ if (system_error_buffer == NULL) {
+ return _zip_err_str[ZIP_ER_MEMORY].description;
+ }
snprintf_s(system_error_buffer, 128, "invalid detail error %u", error);
system_error_buffer[128 - 1] = '\0'; /* make sure string is NUL-terminated */
system_error_string = system_error_buffer;
}
else if (_zip_err_details[error].type == ZIP_DETAIL_ET_ENTRY && index < MAX_DETAIL_INDEX) {
system_error_buffer = (char *)malloc(128);
+ if (system_error_buffer == NULL) {
+ return _zip_err_str[ZIP_ER_MEMORY].description;
+ }
snprintf_s(system_error_buffer, 128, "entry %d: %s", index, _zip_err_details[error].description);
system_error_buffer[128 - 1] = '\0'; /* make sure string is NUL-terminated */
system_error_string = system_error_buffer;