Re: [PATCH] segmentation fault when do ls on local directory

"Alexander V. Lukyanov" <[email protected]> Mon, 26 Mar 2007 10:56:15 +0400
Newsgroups gmane.network.lftp.devel
Message-ID <[email protected]>
On Mon, Mar 26, 2007 at 10:00:09AM +0800, Liu Yubao wrote:
> Someone at a BBS found lftp on Debian Sid (lftp v3.5.9) gets a segmentation
> fault when do ls on local directory:
>
>  DirList::~DirList()
>  {
>     delete buf;
> -   if(args)
> -      delete args;
>  }

This patch leads to a memory leak in other protocols. A better fix is
attached. Thanks for report!

--
   Alexander.
diff (text/plain, 701 B)
Index: LocalAccess.cc
===================================================================
RCS file: /home/lav/cvsroot/lftp/src/LocalAccess.cc,v
retrieving revision 1.53
diff -u -p -r1.53 LocalAccess.cc
--- LocalAccess.cc	13 Mar 2007 11:14:07 -0000	1.53
+++ LocalAccess.cc	26 Mar 2007 06:41:11 -0000
@@ -670,12 +670,12 @@ DirList *LocalAccess::MakeDirList(ArgV *
 
 #include "ArgV.h"
 LocalDirList::LocalDirList(ArgV *a,const char *cwd)
-   : DirList(a)
+   : DirList(0)
 {
    fg_data=0;
    a->setarg(0,"ls");
    a->insarg(1,"-l");
-   InputFilter *f=new InputFilter(a);
+   InputFilter *f=new InputFilter(a); // a is consumed.
    f->SetCwd(cwd);
    ubuf=new IOBufferFDStream(f,IOBuffer::GET);
 }