Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Oct 2006 02:22:51 -0500 (CDT)
From:      Kevin Day <toasty@dragondata.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   bin/104702: [patch] Make fetch(1) preserve permissions when overwriting a file
Message-ID:  <200610230722.k9N7Mpqm042609@server28.stileproject.com>
Resent-Message-ID: <200610230730.k9N7UCKh006831@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         104702
>Category:       bin
>Synopsis:       [patch] Make fetch(1) preserve permissions when overwriting a file
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 23 07:30:11 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Kevin Day
>Release:        FreeBSD 6.1-RELEASE amd64
>Organization:
Your.Org, Inc.
>Environment:
System: FreeBSD server28 6.1-RELEASE FreeBSD 6.1-RELEASE #1: Sat Jul 29 06:31:24 UTC 2006 toasty@server28:/usr/src/sys/amd64/compile/SERVER amd64


>Description:

In FreeBSD 4.x, fetch(1) would preserve file permissions when overwriting a file.

Starting in 5.x, fetch applies inconsistent permissions when creating or overwriting an existing file.

New files are given 0644, but overwritten files are given  0600. Not only is this inconsistent, but I believe fetch should preserve permissions when overwriting a file.

>How-To-Repeat:

server29# uname -r
6.1-RELEASE
server29# fetch -o testfile http://www.freebsd.org
testfile                                      100% of   18 kB  128 kBps
server29# ls -l testfile
-rw-r--r--  1 root  wheel  19135 Oct 19 14:37 testfile
server29# chmod 664 testfile
server29# ls -l testfile
-rw-rw-r--  1 root  wheel  19135 Oct 19 14:37 testfile
server29# fetch -o testfile http://www.freebsd.org
testfile                                      100% of   18 kB  128 kBps
server29# ls -l testfile
-rw-------  1 root  wheel  19135 Oct 19 14:37 testfile

>Fix:

--- fetch.c~       Mon Oct 23 02:13:44 2006
+++ fetch.c     Fri Jul 28 23:40:48 2006
@@ -569,6 +569,8 @@
                        if (tmppath != NULL) {
                                mkstemps(tmppath, strlen(slash) + 1);
                                of = fopen(tmppath, "w");
+                               chown(tmppath, sb.st_uid, sb.st_gid);
+                               chmod(tmppath, sb.st_mode & 07777);
                        }
                }
                if (of == NULL)

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610230722.k9N7Mpqm042609>