mirror of
https://github.com/systemd/systemd.git
synced 2025-02-03 17:47:28 +03:00
resolvconf: fixes for the compatibility interface
Also use compat_main() when called as `resolvconf`, since the interface is closer to that of `systemd-resolve`. Use a heap allocated string to set arg_ifname, since a stack allocated one would be lost after the function returns. (This last one broke the case where an interface name was suffixed with a dot, such as in `resolvconf -a tap0.dhcp`.) Tested: $ build/resolvconf -a nonexistent.abc </etc/resolv.conf Unknown interface 'nonexistent': No such device Fixes #9423.
This commit is contained in:
parent
ad4bc33522
commit
5a01b3f35d
@ -53,6 +53,8 @@ static int parse_nameserver(const char *string) {
|
||||
|
||||
if (strv_push(&arg_set_dns, word) < 0)
|
||||
return log_oom();
|
||||
|
||||
word = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -202,7 +204,7 @@ int resolvconf_parse_argv(int argc, char *argv[]) {
|
||||
|
||||
dot = strchr(argv[optind], '.');
|
||||
if (dot) {
|
||||
iface = strndupa(argv[optind], dot - argv[optind]);
|
||||
iface = strndup(argv[optind], dot - argv[optind]);
|
||||
log_debug("Ignoring protocol specifier '%s'.", dot + 1);
|
||||
} else
|
||||
iface = argv[optind];
|
||||
|
@ -3092,7 +3092,7 @@ int main(int argc, char **argv) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (streq(program_invocation_short_name, "systemd-resolve"))
|
||||
if (STR_IN_SET(program_invocation_short_name, "systemd-resolve", "resolvconf"))
|
||||
r = compat_main(argc, argv, bus);
|
||||
else
|
||||
r = native_main(argc, argv, bus);
|
||||
|
Loading…
x
Reference in New Issue
Block a user