Date: Wed, 16 Aug 2006 12:40:18 GMT From: "Andrey V. Elsukov" <bu7cher@yandex.ru> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/101660: restore(8) does not preserve uid and gid on short symlinks Message-ID: <200608161240.k7GCeI90063394@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/101660; it has been noted by GNATS.
From: "Andrey V. Elsukov" <bu7cher@yandex.ru>
To: bug-followup@FreeBSD.org, minear@securecomputing.com
Cc:
Subject: Re: bin/101660: restore(8) does not preserve uid and gid on short
symlinks
Date: Wed, 16 Aug 2006 16:28:41 +0400
Can you try the following patch:
Index: tape.c
===================================================================
RCS file: /mnt/cvs/ncvs/src/sbin/restore/tape.c,v
retrieving revision 1.44
diff -u -r1.44 tape.c
--- tape.c 29 May 2005 15:57:00 -0000 1.44
+++ tape.c 16 Aug 2006 12:18:00 -0000
@@ -554,6 +554,7 @@
mode_t mode;
struct timeval mtimep[2], ctimep[2];
struct entry *ep;
+ u_int32_t luid, lgid;
curfile.name = name;
curfile.action = USING;
@@ -593,6 +594,8 @@
case IFLNK:
lnkbuf[0] = '\0';
pathlen = 0;
+ luid = curfile.uid;
+ lgid = curfile.gid;
getfile(xtrlnkfile, xtrlnkskip);
if (pathlen == 0) {
vprintf(stdout,
@@ -600,7 +603,7 @@
return (GOOD);
}
if (linkit(lnkbuf, name, SYMLINK) == GOOD) {
- (void) lchown(name, curfile.uid, curfile.gid);
+ (void) lchown(name, luid, lgid);
(void) lchmod(name, mode);
(void) lutimes(name, ctimep);
(void) lutimes(name, mtimep);
--
WBR, Andrey V. Elsukov
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608161240.k7GCeI90063394>
