From 5ce58010abdc258b8b0312dea1a985961e96ada1 Mon Sep 17 00:00:00 2001
From: Anonymus Raccoon
Date: Thu, 21 May 2020 18:45:05 +0200
Subject: [PATCH] Fixing an invalid read
---
src/key_bindings/basic_typing_functions.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/key_bindings/basic_typing_functions.c b/src/key_bindings/basic_typing_functions.c
index cf5391a..9f5b728 100644
--- a/src/key_bindings/basic_typing_functions.c
+++ b/src/key_bindings/basic_typing_functions.c
@@ -21,13 +21,13 @@ int self_insert_command(int key, buffer_t *buffer, env_t *env)
int charslen = strlen(chars);
int len = (buffer->buffer ? strlen(buffer->buffer) : 0) + charslen;
- if (len >= buffer->size || !buffer->buffer) {
+ if (len + 1 >= buffer->size || !buffer->buffer) {
buffer->buffer = realloc(buffer->buffer, buffer->size + 100);
buffer->size += 100;
}
if (!buffer->buffer)
return (-1);
- for (int i = len - 1; i > buffer->pos; i--)
+ for (int i = len - 1; i > buffer->pos && i > charslen; i--)
buffer->buffer[i] = buffer->buffer[i - charslen];
memcpy(buffer->buffer + buffer->pos, chars, charslen);
buffer->buffer[len] = '\0';