From c5fe3d78f34cfb95a4a7448852e2a399a4e98125 Mon Sep 17 00:00:00 2001 From: tobias Date: Wed, 14 Oct 2015 16:42:51 +0000 Subject: [PATCH] Copy permissions AND ownership when -o will override an input file. with input by and ok deraadt@, millert@, tim@ --- usr.bin/sort/sort.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/usr.bin/sort/sort.c b/usr.bin/sort/sort.c index c0305db5d9c..4827f72e7fe 100644 --- a/usr.bin/sort/sort.c +++ b/usr.bin/sort/sort.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sort.c,v 1.81 2015/10/13 16:55:03 tim Exp $ */ +/* $OpenBSD: sort.c,v 1.82 2015/10/14 16:42:51 tobias Exp $ */ /*- * Copyright (C) 2009 Gabor Kovesdan @@ -1132,9 +1132,13 @@ main(int argc, char *argv[]) real_outfile = outfile; sort_asprintf(&outfile, "%s.XXXXXXXXXX", real_outfile); - if ((fd = mkstemp(outfile)) == -1 || - fchmod(fd, sb.st_mode & ACCESSPERMS) == -1) - err(2, "%s", outfile); + if ((fd = mkstemp(outfile)) == -1) + err(2, "mkstemp: %s", outfile); + if (fchown(fd, sb.st_uid, sb.st_gid) == -1) + warn("unable to set ownership of %s", + outfile); + if (fchmod(fd, sb.st_mode & ACCESSPERMS) == -1) + err(2, "fchmod: %s", outfile); close(fd); tmp_file_atexit(outfile); break; -- 2.20.1