[git commit master 1/1] lineedit: create history files with mode 0600

Denys Vlasenko vda.linux at googlemail.com
Mon Nov 15 01:58:28 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=2e9aeae4dbc7bd45640ac472ee6ecb7eaf89fe8d
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/lineedit.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 68006ff..d6c3354 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -1336,7 +1336,7 @@ static void save_history(char *str)
 	int fd;
 	int len, len2;
 
-	fd = open(state->hist_file, O_WRONLY | O_CREAT | O_APPEND, 0666);
+	fd = open(state->hist_file, O_WRONLY | O_CREAT | O_APPEND, 0600);
 	if (fd < 0)
 		return;
 	xlseek(fd, 0, SEEK_END); /* paranoia */
@@ -1351,10 +1351,8 @@ static void save_history(char *str)
 	/* did we write so much that history file needs trimming? */
 	state->cnt_history_in_file++;
 	if (state->cnt_history_in_file > MAX_HISTORY * 4) {
-		FILE *fp;
 		char *new_name;
 		line_input_t *st_temp;
-		int i;
 
 		/* we may have concurrently written entries from others.
 		 * load them */
@@ -1364,8 +1362,12 @@ static void save_history(char *str)
 
 		/* write out temp file and replace hist_file atomically */
 		new_name = xasprintf("%s.%u.new", state->hist_file, (int) getpid());
-		fp = fopen_for_write(new_name);
-		if (fp) {
+		fd = open(state->hist_file, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+		if (fd >= 0) {
+			FILE *fp;
+			int i;
+
+			fp = xfdopen_for_write(fd);
 			for (i = 0; i < st_temp->cnt_history; i++)
 				fprintf(fp, "%s\n", st_temp->history[i]);
 			fclose(fp);
-- 
1.7.1



More information about the busybox-cvs mailing list