On Fri, May 02, 2008 at 02:23:03PM +0800, Herbert Xu wrote:
> On Fri, May 02, 2008 at 01:25:30PM +0800, Herbert Xu wrote:
> >
> > I suspect the problem is klibc's getcwd implementation but this
> > should confirm it for us.
>
> Actually klibc's getcwd is just fine as it is. It's dash that's
> relying on glibc extensions of getcwd.
>
> This patch sould make it work again.
>
> Cheers,
> --
> Visit Openswan at http://www.openswan.org/
> Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
> --
> commit b306b8c58d10c3fa1a34edc22042e4d9b6185f87
> Author: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> Date: Fri May 2 14:20:44 2008 +0800
>
> [CD] Restored non-glibc getcwd support
>
> These days dash is expected to build with libraries other than
> glibc so we need to support the old way of calling getcwd again.
>
> Thanks to Dan McGee for reporting this bug when dash is built with
> klibc.
>
> Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
>
> diff --git a/ChangeLog b/ChangeLog
> index f5e0dbc..5216521 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,7 @@
> +2008-05-02 Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> +
> + * Restored non-glibc getcwd support.
> +
> 2008-03-07 Larry Doolittle <ldoolitt@xxxxxxxxxxxxxxx>
>
> * Fix cmdtxt crash on if statements.
> diff --git a/src/cd.c b/src/cd.c
> index 1849c69..0c2f1ee 100644
> --- a/src/cd.c
> +++ b/src/cd.c
> @@ -241,8 +241,6 @@ updatepwd(const char *dir)
> }
>
>
> -#define MAXPWD 256
> -
> /*
> * Find out what the current directory is. If we already know the current
> * directory, this routine returns immediately.
> @@ -251,8 +249,13 @@ inline
> STATIC char *
> getpwd()
> {
> +#ifdef _GNU_SOURCE
> char *dir = getcwd(0, 0);
> return dir ? dir : nullstr;
> +#else
> + char buf[PATH_MAX];
> + return getcwd(buf, sizeof(buf)) ? savestr(buf) : nullstr;
> +#endif
> }
If this patch is correct then we leak memory in the glic extension case.
According to man 3 getcwd the memory is allocated and thus should be freed.
Is there a specific reason why you did not use PATH_MAX always
and dropped the use of the extension?
Sam
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[LARTC]
[Bugtraq]
[Yosemite Forum]
[Photo]