pacrunner: accept NULL interface name

Pacrunner uses the interface information to implement a myIpAddress()
function which returns the first IPv4 address of the interface
associated to a proxy. That function doesn't deal with multiple
addresses per interface, and so in case of a VPN which configures
addresses on the parent interface (e.g. IPsec), we currently pass a
NULL interface. That is correct, but triggers the following assertion:

GLib-CRITICAL **: g_variant_new_variant: assertion 'value != NULL' failed
 #0  g_logv () from target:/lib64/libglib-2.0.so.0
 #1  g_log () from target:/lib64/libglib-2.0.so.0
 #2  g_variant_new_string () from target:/lib64/libglib-2.0.so.0
 #3  nm_pacrunner_manager_send (self=0xab3230, iface=iface@entry=0x0, proxy_config=proxy_config@entry=0xc83470, ip4_config=ip4_config@entry=0x7f66b4002710, ip6_config=ip6_config@entry=0x0) at nm-pacrunner-manager.c:334
 #4  _set_vpn_state (self=self@entry=0xd0c120, vpn_state=vpn_state@entry=STATE_ACTIVATED, reason=reason@entry=NM_VPN_CONNECTION_STATE_REASON_NONE, quitting=quitting@entry=0) at vpn-manager/nm-vpn-connection.c:571
 #5  dispatcher_pre_up_done (call_id=<optimized out>, user_data=<optimized out>) at vpn-manager/nm-vpn-connection.c:460
 #6  dispatcher_done_cb (proxy=0x988870, result=<optimized out>, user_data=0xae1740) at nm-dispatcher.c:444

Ignore the interface parameter when it's NULL.
This commit is contained in:
Beniamino Galvani 2016-10-13 17:23:34 +02:00
parent db9589f0ce
commit 034f07787d

View file

@ -331,9 +331,11 @@ nm_pacrunner_manager_send (NMPacrunnerManager *self,
g_variant_builder_init (&proxy_data, G_VARIANT_TYPE_VARDICT);
g_variant_builder_add (&proxy_data, "{sv}",
"Interface",
g_variant_new_string (iface));
if (iface) {
g_variant_builder_add (&proxy_data, "{sv}",
"Interface",
g_variant_new_string (iface));
}
method = nm_proxy_config_get_method (proxy_config);
switch (method) {