[Libguestfs] Further nbdkit patches for Haiku

Richard W.M. Jones rjones at redhat.com
Tue Nov 13 15:37:31 UTC 2018


On Tue, Nov 13, 2018 at 09:16:33AM -0600, Eric Blake wrote:
> On 11/13/18 7:40 AM, Richard W.M. Jones wrote:
> >>(I think the error message is "incorrect ELF header") could be
> >>something to do with the way we use shebangs (#!).  IIRC this also
> >>fails on FreeBSD so probably nbdkit is doing something which is not
> >>correct POSIX.
> >
> 
> POSIX says that #! shebangs are undefined behavior. You're at the
> mercy of each operating system, because there is no portable
> solution across all systems.
> 
> >I reproduced this on FreeBSD.  The path used in the tests is indeed
> >relative:
> >
> >   #!../nbdkit
> >
> >However replacing this with an absolute path did *not* fix the issue.
> >FreeBSD seems to not like running a shell script from a shebang,
> >probably because this is (was?) insecure.  However because of the way
> >our test harness works we really need to run the shell script.  As
> >there seems to be no simple way to fix this for now, I left the bug in
> >1.8.0.
> 
> Can you use '#!/bin/sh /path/to/nbdkit'?

I didn't reproduce the full shebang above, but it's actually:

#!../nbdkit perl

(https://github.com/libguestfs/nbdkit/blob/90c0de1c2518510ae0fd8ce6aa41f2f96edda061/tests/shebang.pl#L1)

So I suppose adding the extra parameter will not work.

> That way, the shebang is
> running a binary (not a script), where the binary in turn runs the
> desired script?  Or does that run into other limitations (for
> example, #! can only portably used with exactly one argument after
> the interpreter name; BSD and more recently coreutils have added
> 'env -S' to work around that limitation, although it is not yet
> widespread portable).

This might work.  I'll check and get back.

> But yes, I do seem to recall that #! must
> point to a binary interpreter rather than a script of an unspecified
> language (the fact that Linux will happily run a script under
> /bin/sh is not universal).

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW




More information about the Libguestfs mailing list