From d97649859dc9058443bcb77f3abdf94877240b01 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Mon, 27 Nov 2006 04:57:22 +0000 Subject: [PATCH] in do_insertfile(), properly handle files that contain nulls git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3974 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 3 ++- src/files.c | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6b9e4056..564d0ecb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,7 +3,8 @@ CVS code - - Miscellaneous comment fixes. (DLR) - files.c: do_insertfile() - - Properly handle executable commands that contain nulls. (DLR) + - Properly handle files and executable commands that contain + nulls. (DLR) - nano.h: - Rename NANO_ALT_REPLACE_KEY to NANO_REPLACE_ALTKEY, for consistency. (DLR) diff --git a/src/files.c b/src/files.c index 793c9b28..c22b5d33 100644 --- a/src/files.c +++ b/src/files.c @@ -683,7 +683,7 @@ void do_insertfile( char *ans = mallocstrcpy(NULL, ""); /* The last answer the user typed on the statusbar. */ filestruct *edittop_save = openfile->edittop; - size_t current_x_save = openfile->current_x; + size_t current_x_save = openfile->current_x, answer_len; ssize_t current_y_save = openfile->current_y; bool at_edittop = FALSE; /* Whether we're at the top of the edit window. */ @@ -800,27 +800,23 @@ void do_insertfile( } #endif + answer_len = strlen(answer); + + /* Convert newlines to nulls, just before we execute a + * command. */ + sunder(answer); + #ifndef NANO_TINY if (execute) { - size_t answer_len = strlen(answer); - #ifdef ENABLE_MULTIBUFFER if (ISSET(MULTIBUFFER)) /* Open a blank buffer. */ open_buffer(""); #endif - /* Convert newlines to nulls, just before we execute a - * command. */ - sunder(answer); - /* Save the command's output in the current buffer. */ execute_command(answer); - /* Convert nulls to newlines. answer_len is answer's - * real length. */ - unsunder(answer, answer_len); - #ifdef ENABLE_MULTIBUFFER if (ISSET(MULTIBUFFER)) { /* Move back to the beginning of the first line of @@ -844,6 +840,10 @@ void do_insertfile( } #endif + /* Convert nulls to newlines. answer_len is answer's real + * length. */ + unsunder(answer, answer_len); + #ifdef ENABLE_MULTIBUFFER if (ISSET(MULTIBUFFER)) /* Update the screen to account for the current