aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/shada.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/shada.c')
-rw-r--r--src/nvim/shada.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/nvim/shada.c b/src/nvim/shada.c
index 4788b1e7d0..728a3f65be 100644
--- a/src/nvim/shada.c
+++ b/src/nvim/shada.c
@@ -3413,7 +3413,15 @@ shada_read_next_item_start:
return mru_ret;
}
- const size_t length = (size_t) length_u64;
+ if (length_u64 > PTRDIFF_MAX) {
+ emsgf(_(RCERR "Error while reading ShaDa file: "
+ "there is an item at position %" PRIu64 " "
+ "that is stated to be too long"),
+ initial_fpos);
+ return kSDReadStatusNotShaDa;
+ }
+
+ const size_t length = (size_t)length_u64;
entry->timestamp = (Timestamp) timestamp_u64;
if (type_u64 == 0) {