Hello All, In reviewing the code at line 990 in bashfile.c, while the issue of rl_line_buffer[0] = '\0', would it not be better to use memset(rl_line_buffer, '\0', sizeof(rl_line_buffer)) to clobber the entire line more effectively? The patch file below addresses this issue:
--- bashline.c.orig 2015-07-08 14:43:45.000000000 -0700 +++ bashline.c 2015-07-08 14:45:08.000000000 -0700 @@ -987,7 +987,7 @@ /* Now erase the contents of the current line and undo the effects of the rl_accept_line() above. We don't even want to make the text we just executed available for undoing. */ - rl_line_buffer[0] = '\0'; /* XXX */ + memset(rl_line_buffer, '\0', sizeof(rl_line_buffer)); /* clobber the entire buffer */ rl_point = rl_end = 0; rl_done = 0; rl_readline_state = rrs; ======================================================================= Here is a test program which shows that the buffer does not get clobbered in the case of 'rl_line_buffer[0]' is set to '\0': #include <stdio.h> #include <string.h> int main(void) { char buffer[27]; printf("please enter a line of text ->"); fgets(buffer, sizeof(buffer), stdin); printf("\n"); printf("The line entered is: %s\n", buffer); buffer[0] = '\0'; /* does this clobber the buffer */ printf("\nvalue of buffer[0] is: %c\n", buffer[0]); printf("value of buffer[11] is: %c\n", buffer[11]); memset(buffer, '\0', sizeof(buffer)); printf("\nafter call to memset\n\n"); printf("value of buffer[0] is: %c\n", buffer[0]); printf("value of buffer[11] is: %c\n", buffer[11]); return 0; } Here is the output: [bill@moocow ~]$ gcc -O2 testline.c [bill@moocow ~]$ ./a.out please enter a line of text ->abcdeFGHIJklmnoPQRSTuvwXyZ The line entered is: abcdeFGHIJklmnoPQRSTuvwXyZ value of buffer[0] is: value of buffer[11] is: l after call to memset value of buffer[0] is: value of buffer[11] is: As you can see, setting buffer[0] to '\0' doesn't exactly clobber the remaining data in buffer, but after calling memset(), all of the data is clobbered. Comments, Questions, Suggestions, Complaints? :) I am attaching the patch file to this bug report. Bill Parker (wp02855 at gmail dot com)
bashline.c.patch
Description: Binary data