Date: Fri, 26 Apr 2002 11:00:03 -0700 (PDT) From: Peter Sanchez <psanchez@packet-addiction.org> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/37250: [PATCH] ftpd(8) cannot delete stale symlinks Message-ID: <200204261800.g3QI03173162@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/37250; it has been noted by GNATS.
From: Peter Sanchez <psanchez@packet-addiction.org>
To: Nino Dehne <ndehne@clan-planet.ch>,
freebsd-gnats-submit@FreeBSD.org
Cc:
Subject: Re: bin/37250: [PATCH] ftpd(8) cannot delete stale symlinks
Date: Fri, 26 Apr 2002 11:57:59 -0700
This patch appears to work...
-- START
--- libexec/ftpd/ftpd.c Fri Apr 26 11:39:59 2002
+++ libexec/ftpd/ftpd.c.new Fri Apr 26 11:40:34 2002
@@ -2170,8 +2170,10 @@
LOGCMD("delete", name);
if (stat(name, &st) < 0) {
- perror_reply(550, name);
- return;
+ if (lstat(name, &st) < 0) {
+ perror_reply(550, name);
+ return;
+ }
}
if ((st.st_mode&S_IFMT) == S_IFDIR) {
if (rmdir(name) < 0) {
-- END
cd /usr/src && patch < ftpd.patch
cd libexec/ftpd && make all install clean
Peter
On Fri, Apr 19, 2002 at 06:15:25AM -0700, Nino Dehne wrote:
>
> >Number: 37250
> >Category: bin
> >Synopsis: [PATCH] ftpd(8) cannot delete stale symlinks
> >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: Fri Apr 19 06:20:01 PDT 2002
> >Closed-Date:
> >Last-Modified:
> >Originator: Nino Dehne
> >Release: FreeBSD 4.5-RELEASE-p2 i386
> >Organization:
> Clan-Planet GmbH
> >Environment:
> FreeBSD [...] 4.5-RELEASE-p2 FreeBSD 4.5-RELEASE-p2 #1: Tue Mar 19 18:17:09 CET 2002 root@[...] i386
> >Description:
> When trying to delete a file via ftp(1) (or any other client, it doesn't matter), ftpd(8) does a stat(2) on the file to verify it's there. However, if the file to delete is a symlink the target of the link gets checked, not the link itself thus making stale links impossible to delete via ftp.
>
> This occured when local users had symlinks in their home which point to /usr/local/something but are rendered stale when users log in via ftp (due to using chroot() feature of ftpd(8)).
> >How-To-Repeat:
> Create a symlink inside a user's home which points outside of the user's home. Log in as that user via ftp while chroot()'ing him using /etc/ftpchroot. Try to delete said link.
>
> This should also work with "ordinary" stale symlinks, i.e. not involving any chroot'ing behaviour of ftpd(8).
> >Fix:
>
> >Release-Note:
> >Audit-Trail:
> >Unformatted:
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-bugs" in the body of the message
--
Peter Sanchez, aka fut0n | "The ability to read is what
- fut0n@linuxforlesbians.org | distinguishes Unix users from
- www.linuxforlesbians.org | those of more popular platforms."
- FreeBSD or DIE | - John Lasser
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204261800.g3QI03173162>
