Return-Path: X-Original-To: apmail-commons-issues-archive@minotaur.apache.org Delivered-To: apmail-commons-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CFDF1D995 for ; Wed, 19 Sep 2012 01:15:08 +0000 (UTC) Received: (qmail 85065 invoked by uid 500); 19 Sep 2012 01:15:08 -0000 Delivered-To: apmail-commons-issues-archive@commons.apache.org Received: (qmail 84962 invoked by uid 500); 19 Sep 2012 01:15:08 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 84812 invoked by uid 99); 19 Sep 2012 01:15:08 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 19 Sep 2012 01:15:08 +0000 Date: Wed, 19 Sep 2012 12:15:08 +1100 (NCT) From: "Jason (JIRA)" To: issues@commons.apache.org Message-ID: <162424977.95479.1348017308334.JavaMail.jiratomcat@arcas> In-Reply-To: <1892138664.90363.1347925268919.JavaMail.jiratomcat@arcas> Subject: [jira] [Commented] (VFS-437) [FTP] Program crashes when StackOverFlow Exception happens from pulling a softlinked directory that link to the directory that has the same name one level above MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/VFS-437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13458342#comment-13458342 ] Jason commented on VFS-437: --------------------------- The ftp server should be linux system > [FTP] Program crashes when StackOverFlow Exception happens from pulling a softlinked directory that link to the directory that has the same name one level above > ----------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: VFS-437 > URL: https://issues.apache.org/jira/browse/VFS-437 > Project: Commons VFS > Issue Type: Bug > Affects Versions: 2.0 > Environment: java version "1.7.0_02" > Java(TM) SE Runtime Environment (build 1.7.0_02-b13) > Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode) > Linux version 2.6.18-238.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Thu Jan 13 15:51:15 EST 2011 > Reporter: Jason > Priority: Blocker > Fix For: 2.1 > > > With the setting below, StackOverFlow exceptions occur and server crashes > set the builder.setUserDirlsRoot (opt, true) > Attept to pull with: > ftp://root:password@ip:/Vol1 > Vol directory has the following info > lrwxrwxrwx 1 root root 5 Oct 5 2007 Vol1 -> /Vol1 > When it tries to look for the parent of the Vol1, it goes back to the same Vol1, which causes a infinite loop that eventually creates stackoverflow exception. > The problem is inside the doGetType() method in FtpFileObject > @Override > protected FileType doGetType() > throws Exception > { > // VFS-210 > synchronized (getFileSystem()) > { > if (this.fileInfo == null) > { > getInfo(false); > } > if (this.fileInfo == UNKNOWN) > { > return FileType.IMAGINARY; > } > else if (this.fileInfo.isDirectory()) > { > return FileType.FOLDER; > } > else if (this.fileInfo.isFile()) > { > return FileType.FILE; > } > else if (this.fileInfo.isSymbolicLink()) > { > return getLinkDestination().getType(); > } > } > throw new FileSystemException("vfs.provider.ftp/get-type.error", getName()); > } > It will keep hitting the "else if (this.fileinfo.isSymbolicLink())" condition and the fileinfo displayed is always the Vol1 under root directory. > Exception is shown below > java.lang.StackOverflowError > at org.apache.commons.net.ftp.FTPFile.isDirectory(FTPFile.java:116) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:334) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) > at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:496) > at org.apache.commons.vfs2.provider.ftp.FtpFileObject.doGetType(FtpFileObject.java:344) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira