Print

Print


Hello Fabrizio

I just checked the DirList() and it works just fine.

Thanks a lot,
   Wilko


On Thu, 13 Jan 2005, Fabrizio Furano wrote:

> Hi Wilko,
>
>   you are perfectly right, and the info you sent were absolutely complete.
>
>   Fortunately that string class does index checkings, otherwise we could
> have ugly behaviors instead of an abort().
>
>   I just fixed the bug, let me know.
>
> Fabrizio
>
> Wilko Kroeger wrote:
> > Hello Fabrizio
> >
> > We found that a core is produced if the function
> >    XrdClientAdmin_c::XrdDirList(const char *dir)
> > is called and the directory for which we want to get the
> > listing is empty.
> >
> > In this case the call to
> >    adminst->DirList(dir, entries)    in XrdClientAdmin_c::XrdDirList
> > returns an empty vector (entries) and the call
> >   joinStrings(lst, entries);
> > crashes because joinStrings can not handle
> > an empty vector. At least that's what it looks to me.
> >
> >
> > The test program that I run is:
> >
> > #include "XrdClient/XrdClient.hh"
> > #include "XrdClient/XrdClientAdmin_c.hh"
> > #include <iostream>
> >
> > int main(int argc, char **argv) {
> >      XrdInitialize(argv[1], 2);
> >      char *strans;
> >      strans = XrdDirList("/prod/s1/s2/s3/s5");
> >      cout << "answer : " << strans endl;
> >      XrdTerminate();
> > }
> >
> > and the core is:
> >
> > (gdb) where
> > #0  0x005cbcdf in raise () from /lib/tls/libc.so.6
> > #1  0x005cd4e5 in abort () from /lib/tls/libc.so.6
> > #2  0x0804d15e in XrdClientString::At(int) (this=0xbfff9af0, pos=-1)
> >     at XrdClientString.hh:103
> > #3  0x0804cfab in XrdClientString::operator[](int) (this=0xbfff9af0, pos=-1)
> >     at XrdClientString.hh:213
> > #4  0x0804de78 in joinStrings(XrdClientString&, XrdClientVector<XrdClientString>)
> >     (buf=@0xbfff9af0, vs={data = 0x0, size = 0, capacity = 0})
> >     at XrdClientAdmin.cc:46
> > #5  0x0804c601 in XrdDirList (dir=0x8071228 "/prod/s1/s2/s3/s5")
> >     at XrdClientAdmin_c.cc:230
> > #6  0x0804b9c1 in main (argc=2, argv=0xbfff9bd4) at TestXrdClient.cc:26
> >
> >
> >
> > The xrootd version is 20041220-1337.
> >
> > Thanks,
> >   Wilko
>