Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120608132731.042df3b2@sibserver.ru>
Date: Fri, 8 Jun 2012 13:27:31 +0800
From: orc <orc@...server.ru>
To: musl@...ts.openwall.com
Subject: Re: bug? sysinfo() and getopt_long() misbehavior

On Thu, 7 Jun 2012 23:12:43 -0400
Rich Felker <dalias@...ifal.cx> wrote:

> On Fri, Jun 08, 2012 at 12:51:48AM +0800, orc wrote:
> > I have built a musl-enabled system and encountered some bugs:
> > 
> > - sysinfo() incorrectly works. The result is busybox' free
> > misbehaving:
> 
> Thanks for the catch. Apparently the structure definition was bogus
> and was not intended for direct use with the linux sysinfo syscall.
> It's fixed in git.
Thanks!
> 
> > - (did not investigated properly) possible getopt_long()
> > misbehavior, or just miscompile. The result is that iptables and
> > gnu sed misbehaving at command line arguments:
> > % sed -i '/test/d' ttnosuchfile
> > sed: can't find label for jump to `tnosuchfile'
> 
> My GNU sed build does not exhibit this behavior. It's linked with an
> older musl, but the getopt code has not changed. Is it possible you
> did anything odd building musl (editing the makefile/cflags)? Does the
> same happen if you static link sed? If your answers to these questions
> suggest a problem in musl, I'll rebuild sed and see if I can reproduce
> it.
> 
> > % sed '/test/d' -i ttnosuchfile
> > sed: can't read -i: No such file or directory
> > sed: can't read ttnosuchfile: No such file or directory
> 
> This is to be expected. Options must come before non-option arguments.
> The glibc behavior to the contrary is broken and non-conformant.
Yes, I expected that glibc encourages wrong behavior.
Sorry, that was my fault: I actually *cross-compiled* sed and it's
autohell misdetected something during it (as it usually happens). When
native-compiling, problem gone away. (I think the same will be with
e2fsprogs, their cross-compiled versions die with GPF on target)
> 
> > # iptables -vnL
> > iptables v1.4.12.1: unknown arguments found on commandline
> > Try `iptables -h' or 'iptables --help' for more information.
> > # iptables --version
> > iptables v1.4.12.1: unknown arguments found on commandline
> > Try `iptables -h' or 'iptables --help' for more information.
> > 
> > Both sed and iptables were compiled with -D_GNU_SOURCE defined.
> > 
> > Unfortunately I don't actually know how to fix these two.
> 
> I'm suspecting something is broken with respect to dynamic linking...
> Are you using an old version of binutils? Did you remove or replace
> -Bsymbolic-functions with something else?
Binutils 2.20, musl compiled with -Bsymbolic-functions. But statically
or dynamically linked iptables still rejects to accept arguments.
It required ugly fix to work, mostly same as iproute2, removing some
non-conformant extensions, correct headers, maybe there is a fault. It
also expects somewhere that we have glibc (#ifdef __GLIBC__) headers.
Maybe it's code is non-conformant in whole. I will try to see where it
fails on host.
> 
> Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.