From 9514d77a481abe6ebe3cb1f52d850f3b3382e4a8 Mon Sep 17 00:00:00 2001 From: jmallett Date: Tue, 7 May 2002 23:32:26 +0000 Subject: Add handling for any nil-length string passed to -i for the backup extension. Add a note that this is kinda-sorta dangerous to the manual page. --- usr.bin/sed/main.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'usr.bin/sed/main.c') diff --git a/usr.bin/sed/main.c b/usr.bin/sed/main.c index b4c0916..812f62e 100644 --- a/usr.bin/sed/main.c +++ b/usr.bin/sed/main.c @@ -320,6 +320,8 @@ mf_fgets(sp, spflag) fname = files->fname; if ((f = fopen(fname, "r")) == NULL) err(1, "%s", fname); + if (inplace != NULL && *inplace == '\0') + unlink(fname); } if ((c = getc(f)) != EOF) { (void)ungetc(c, f); @@ -366,6 +368,8 @@ mf_fgets(sp, spflag) fname = files->fname; if ((f = fopen(fname, "r")) == NULL) err(1, "%s", fname); + if (inplace != NULL && *inplace == '\0') + unlink(fname); } } (void)ungetc(c, f); @@ -427,8 +431,16 @@ inplace_edit(filename) return -1; } - strlcpy(backup, *filename, MAXPATHLEN); - strlcat(backup, inplace, MAXPATHLEN); + if (*inplace == '\0') { + char template[] = "/tmp/sed.XXXXXXXXXX"; + + if (mktemp(template) == NULL) + err(1, "mktemp"); + strlcpy(backup, template, MAXPATHLEN); + } else { + strlcpy(backup, *filename, MAXPATHLEN); + strlcat(backup, inplace, MAXPATHLEN); + } input = open(*filename, O_RDONLY); if (input == -1) -- cgit v1.1