[Bug 12401] New: Problem with argument parsing of "busybox nc" compiled on musl

bugzilla at busybox.net bugzilla at busybox.net
Thu Dec 12 10:38:55 UTC 2019


            Bug ID: 12401
           Summary: Problem with argument parsing of "busybox nc" compiled
                    on musl
           Product: Busybox
           Version: 1.31.x
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P5
         Component: Other
          Assignee: unassigned at busybox.net
          Reporter: remy at grunblatt.org
                CC: busybox-cvs at busybox.net
  Target Milestone: ---

Created attachment 8316
  --> https://bugs.busybox.net/attachment.cgi?id=8316&action=edit
Busybox .config file


I'm using busybox as provided by the Openwrt project, version 1.31.1. The
.config is attached.

Busybox is compiled using "musl".

In my installation (openwrt), it seems the option "-e" is not parsed correctly:

    /tmp/rootfs/mnt # busybox nc 12345 -e ./foo.sh
    BusyBox v1.31.1 () multi-call binary.

    Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]


    /tmp/rootfs/mnt # busybox nc -e
    nc: option requires an argument: e
    BusyBox v1.31.1 () multi-call binary.


When busybox is compiled using "glibc", it works (unless POSIXLY_CORRECT is
set, then it fails in the same way).

People on the Openwrt IRC channel (that basically investigated this bug) argue
that it has to do with the "while (optind < argc)" part: if you put "-e" before
the IPADDR PORT, nc considers IPADDR PORT as parameters of the program. If you
put -e after the IPADDR PORT, then getopt returns EOF when seeing IPADDR PORT
and the code handling the "-e" option isn't hit. They also mention how musl
getopt is different from the getopt from glibc (regarding reshuffling argv) and
it's related.


You are receiving this mail because:
You are on the CC list for the bug.

More information about the busybox-cvs mailing list