read(1) garbage when input redirected from make incorrectly

Jan Mikkelsen janm at transactionware.com
Tue Feb 16 02:12:35 UTC 2010


On 16/02/2010, at 11:55 AM, Garrett Cooper wrote:

> Hi Hackers,
>    I accidentally reproduced the following after executing read
> properly in a pipeline with make:
> 
> [garrcoop at garrcoop-fbsd /usr/home/garrcoop]$ read DESTDIR SRCCONF <
> /usr/bin/make -V DESTDIR -V SRCCONF
> bash: read: `-V': not a valid identifier
> [garrcoop at garrcoop-fbsd /usr/home/garrcoop]$ echo $DESTDIR
>  ELF
> [garrcoop at garrcoop-fbsd /usr/home/garrcoop]$ hexdump -C foo
> 00000000  7f 45 4c 46 01 01 01 0a                           |.ELF....|
> 00000008
> [garrcoop at garrcoop-fbsd /usr/home/garrcoop]$
> 
>    Is this an issue to be concerned about apart from cosmetic noise,
> i.e. potential buffer access problem? I see the same garbage from
> bash/coreutils on RHEL 4.6 as well as read(1) and /bin/sh on FreeBSD
> with RELENG_8, so the issue appears to be consistent on multiple
> OSes...
> Thanks,
> -Garrett

I think you meant to type:

    make -V DESTDIR -V SRCCONF | read DESTDIR SRCCONF

What you are actually doing is feeding the contents of the make binary into:

    read DESTDIR SRCCONF -V DESTDIR -V SRCCONF

and the shell is correctly complaining about '-V' not being a valid identifier, and populating DESTDIR with data it got from the binary.

Jan



More information about the freebsd-hackers mailing list