From 7c0e433305bd3e1bba20dab343003950db1ba82f Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Mon, 22 Feb 2016 13:17:53 +0000
Subject: [PATCH] Not moving too many bytes -- that is: not moving them beyond
 the allocated buffer.  This fixes Savannah bug #47219.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5662 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog    | 2 ++
 src/prompt.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index dc47ddb8..0a1c5b67 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,8 @@
 	* src/winio.c (edit_scroll): The amount to scroll is never zero.
 	* src/prompt.c (do_statusbar_prev_word, do_statusbar_next_word),
 	src/move.c (do_prev_word, do_next_word): Sort these in standard way.
+	* src/prompt.c (do_statusbar_output): Don't move too many bytes.
+	This fixes Savannah bug #47219 (uncovered by r5655).
 
 2016-02-21  Benno Schulenberg  <bensberg@justemail.net>
 	* src/files.c (input_tab): If the first Tab added the part that all
diff --git a/src/prompt.c b/src/prompt.c
index 9d5908d7..55855b6c 100644
--- a/src/prompt.c
+++ b/src/prompt.c
@@ -290,7 +290,7 @@ void do_statusbar_output(int *the_input, size_t input_len,
 	assert(statusbar_x <= answer_len);
 
 	charmove(answer + statusbar_x + char_buf_len, answer + statusbar_x,
-			answer_len - statusbar_x + char_buf_len);
+			answer_len - statusbar_x + 1);
 	strncpy(answer + statusbar_x, char_buf, char_buf_len);
 	answer_len += char_buf_len;
 
-- 
GitLab