Open history files with a restrictive mode (user read/write only). Do not read/write history files in '.' if $HOME is not set. Apply by doing: cd /usr/src patch -p0 < 040_readline.patch And rebuild binutils by doing: cd /usr/src/gnu/usr.bin/binutils make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install Index: gnu/usr.bin/binutils/readline/history.c =================================================================== RCS file: /cvs/src/gnu/usr.bin/binutils/readline/history.c,v retrieving revision 1.2 diff -u -r1.2 history.c --- gnu/usr.bin/binutils/readline/history.c 1996/11/23 03:53:32 1.2 +++ gnu/usr.bin/binutils/readline/history.c 2001/03/18 01:17:12 @@ -464,7 +464,7 @@ home = getenv ("HOME"); if (!home) - home = "."; + return (NULL); return_val = (char *)xmalloc (2 + strlen (home) + strlen (".history")); @@ -499,8 +499,10 @@ int file, current_line; struct stat finfo; - input = history_filename (filename); - file = open (input, O_RDONLY, 0666); + if ((input = history_filename (filename))) + file = open (input, O_RDONLY, 0666); + else + file = -1; if ((file < 0) || (stat (input, &finfo) == -1)) @@ -584,7 +586,7 @@ struct stat finfo; filename = history_filename (fname); - if (stat (filename, &finfo) == -1) + if (!filename || stat (filename, &finfo) == -1) goto truncate_exit; file = open (filename, O_RDONLY, 0666); @@ -621,7 +623,7 @@ break; } - file = open (filename, O_WRONLY | O_TRUNC | O_CREAT, 0666); + file = open (filename, O_WRONLY | O_TRUNC | O_CREAT, 0600); if (file == -1) goto truncate_exit; @@ -656,7 +658,7 @@ else mode = O_WRONLY | O_APPEND; - if ((file = open (output, mode, 0666)) == -1) + if (!output || (file = open (output, mode, 0600)) == -1) { if (output) free (output);