Skip site navigation (1)Skip section navigation (2)
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>