1
0
Fork 0
mirror of https://passt.top/passt synced 2025-06-15 03:45:34 +02:00

conf: Stop parsing options at first non-option argument

Given that pasta supports specifying a command to be executed on the
command line, even without the usual -- separator as long as there's
no ambiguity, we shouldn't eat up options that are not meant for us.

Paul reports, for instance, that with:

  pasta --config-net ip -6 route

-6 is taken by pasta to mean --ipv6-only, and we execute 'ip route'.
That's because getopt_long(), by default, shuffles the argument list
to shift non-option arguments at the end.

Avoid that by adding '+' at the beginning of 'optstring'.

Reported-by: Paul Holzinger <pholzing@redhat.com>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Stefano Brivio 2024-08-08 06:02:51 +02:00
parent 09603cab28
commit baccfb95ce
2 changed files with 3 additions and 3 deletions

2
util.c
View file

@ -710,7 +710,7 @@ void close_open_files(int argc, char **argv)
int name, rc;
do {
name = getopt_long(argc, argv, ":F", optfd, NULL);
name = getopt_long(argc, argv, "+:F", optfd, NULL);
if (name == 'F') {
errno = 0;