Commit graph

15075 commits

Author SHA1 Message Date
Thomas Haller
24b8a4bc75 shared/systemd: fix gettid() compat implementation shadowing function from glibc
On Fedora rawhide we get the following build failure:

    In file included from shared/systemd/src/basic/alloc-util.c:3:
    ./shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h:114:21: error: static declaration of 'gettid' follows non-static declaration
      114 | static inline pid_t gettid(void) {
          |                     ^~~~~~
    In file included from /usr/include/unistd.h:1170,
                     from /usr/include/glib-2.0/gio/gcredentials.h:32,
                     from /usr/include/glib-2.0/gio/gio.h:46,
                     from ./shared/nm-utils/nm-macros-internal.h:31,
                     from ./shared/nm-default.h:293,
                     from ./shared/systemd/sd-adapt-shared/nm-sd-adapt-shared.h:22,
                     from shared/systemd/src/basic/alloc-util.c:3:
    /usr/include/bits/unistd_ext.h:34:16: note: previous declaration of 'gettid' was here
       34 | extern __pid_t gettid (void) __THROW;
          |                ^~~~~~

glibc supports now gettid() call ([1]) which conflicts with our compat
implementation. Rename it.

[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=1d0fc213824eaa2a8f8c4385daaa698ee8fb7c92

(cherry picked from commit 10276322bd)
(cherry picked from commit cfb970b277)
(cherry picked from commit d160b7b990)
(cherry picked from commit b10a7e5786)
(cherry picked from commit 4ae20ea80a)
(cherry picked from commit d943b538cf)
(cherry picked from commit b3332f6df6)
(cherry picked from commit a03d784610)
2020-03-06 12:09:11 +01:00
Beniamino Galvani
bbc13c5bb6 lldp: fix parsing of vlan-name attribute
We used to read 3 bytes after the TLV, fix this.

Also, check that string length is at most 32 bytes as specified in
figure E.3 of IEEE 802.1AB-2009.

Fixes: 18133ea142

https://bugzilla.redhat.com/show_bug.cgi?id=1652210
(cherry picked from commit e909778710)
(cherry picked from commit 05c27c3c50)
(cherry picked from commit 6d4ad477b8)
(cherry picked from commit b97d38e579)
(cherry picked from commit 73b572e001)
(cherry picked from commit d8c41cd8b0)
(cherry picked from commit 7408264674)
2018-11-22 10:15:23 +01:00
Thomas Haller
ba3f905c44 systemd: merge branch 'CVE-2018-15688' into nm-1-2 2018-10-29 21:53:39 +01:00
Lennart Poettering
6e56de0d87 dhcp6: make sure we have enough space for the DHCP6 option header
Fixes a vulnerability originally discovered by Felix Wilhelm from
Google.

CVE-2018-15688
LP: #1795921
https://bugzilla.redhat.com/show_bug.cgi?id=1639067

(cherry picked from commit 4dac5eaba4e419b29c97da38a8b1f82336c2c892)
(cherry picked from commit 01ca2053bb)
(cherry picked from commit fc230dca13)
(cherry picked from commit cc1e5a7f57)
(cherry picked from commit c3221cb0c5)
(cherry picked from commit f4f7655341)
(cherry picked from commit 2a25872910)
(cherry picked from commit ec471872e4)
2018-10-29 21:50:56 +01:00
Li Song
694cdacfc6 sd-dhcp: remove unreachable route after rebinding return NAK
(cherry picked from commit cc3981b1272b9ce37e7d734a7b2f42e84acac535)
(cherry picked from commit 915c2f675a)
(cherry picked from commit cb77290a69)
(cherry picked from commit f211b140a5)
(cherry picked from commit 1cfefbb99f)
(cherry picked from commit f3f5441820)
(cherry picked from commit 7337cd21dd)
(cherry picked from commit 8a6f6cab22)
2018-10-29 21:50:56 +01:00
Yu Watanabe
1dc1bfffa5 sd-dhcp6: make dhcp6_option_parse_domainname() not store empty domain
This improves performance of fuzzer.
C.f. oss-fuzz#11019.

(cherry picked from commit 3c72b6ed4252e7ff5f7704bfe44557ec197b47fa)
(cherry picked from commit 50403cccee)
(cherry picked from commit f11f5abb1a)
(cherry picked from commit c836279fca)
(cherry picked from commit 4ca0e57c46)
(cherry picked from commit 32e71d5bc0)
(cherry picked from commit 331e81621e)
(cherry picked from commit d589df0639)
2018-10-29 21:50:56 +01:00
Yu Watanabe
71c66cd291 sd-dhcp-lease: fix memleaks
(cherry picked from commit e2975f854831d08a25b4f5eb329b6d04102e115f)
(cherry picked from commit 157094abd8)
(cherry picked from commit 3fd9d11619)
(cherry picked from commit 4439f07841)
(cherry picked from commit cbd0609cc4)
(cherry picked from commit 3a070225b5)
(cherry picked from commit 77d882583d)
2018-10-29 21:50:56 +01:00
Evgeny Vereshchagin
42d0012d74 dhcp6: fix an off-by-one error in dhcp6_option_parse_domainname
==14==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200055fa9c at pc 0x0000005458f1 bp 0x7ffc78940d90 sp 0x7ffc78940d88
READ of size 1 at 0x60200055fa9c thread T0
    #0 0x5458f0 in dhcp6_option_parse_domainname /work/build/../../src/systemd/src/libsystemd-network/dhcp6-option.c:555:29
    #1 0x54706e in dhcp6_lease_set_domains /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-lease.c:242:13
    #2 0x53fce0 in client_parse_message /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:984:29
    #3 0x53f3bc in client_receive_advertise /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:1083:13
    #4 0x53d57f in client_receive_message /work/build/../../src/systemd/src/libsystemd-network/sd-dhcp6-client.c:1182:21
    #5 0x7f0f7159deee in source_dispatch /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3042:21
    #6 0x7f0f7159d431 in sd_event_dispatch /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3455:21
    #7 0x7f0f7159ea8d in sd_event_run /work/build/../../src/systemd/src/libsystemd/sd-event/sd-event.c:3512:21
    #8 0x531f2b in fuzz_client /work/build/../../src/systemd/src/fuzz/fuzz-dhcp6-client.c:44:9
    #9 0x531bc1 in LLVMFuzzerTestOneInput /work/build/../../src/systemd/src/fuzz/fuzz-dhcp6-client.c:53:9
    #10 0x57bec8 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /src/libfuzzer/FuzzerLoop.cpp:570:15
    #11 0x579d67 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) /src/libfuzzer/FuzzerLoop.cpp:479:3
    #12 0x57dc92 in fuzzer::Fuzzer::MutateAndTestOne() /src/libfuzzer/FuzzerLoop.cpp:707:19
    #13 0x580ca6 in fuzzer::Fuzzer::Loop(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, fuzzer::fuzzer_allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) /src/libfuzzer/FuzzerLoop.cpp:838:5
    #14 0x55e968 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /src/libfuzzer/FuzzerDriver.cpp:764:6
    #15 0x551a1c in main /src/libfuzzer/FuzzerMain.cpp:20:10
    #16 0x7f0f701a082f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #17 0x41e928 in _start (/out/fuzz-dhcp6-client+0x41e928)

https://github.com/systemd/systemd/pull/10200
b387d3c132
(cherry picked from commit 7cb7cffc49)
(cherry picked from commit cd3aacefdd)
(cherry picked from commit 5b140a77bc)
(cherry picked from commit 0f25f47767)
(cherry picked from commit c13e43979e)
(cherry picked from commit b7b2c8ad38)
(cherry picked from commit 86391f2741)
2018-10-29 21:50:56 +01:00
Thomas Haller
4098b7d334 systemd/dhcp: fix assertion starting DHCP client without MAC address
An assertion in dhcp_network_bind_raw_socket() is triggered when
starting an sd_dhcp_client without setting setting a MAC address
first.

  - sd_dhcp_client_start()
    - client_start()
      - client_start_delayed()
        - dhcp_network_bind_raw_socket()

In that case, the arp-type and MAC address is still unset. Note that
dhcp_network_bind_raw_socket() already checks for a valid arp-type
and MAC address below, so we should just gracefully return -EINVAL.

Maybe sd_dhcp_client_start() should fail earlier when starting without
MAC address. But the failure here will be correctly propagated and
the start aborted.

See-also: https://github.com/systemd/systemd/pull/10054
(cherry picked from commit 34af574d58)
(cherry picked from commit 0a797bdc2a)
(cherry picked from commit f37ed84ca4)
(cherry picked from commit 1031b2bb5c)
(cherry picked from commit 4ca49f52fa)
(cherry picked from commit 59941b2124)
(cherry picked from commit d8f9054e9b)
2018-10-29 21:50:56 +01:00
Evgeny Vereshchagin
18ee4a9191 sd-network: fix memleak in dhcp6_option_parse_domainname (#5114)
The simplest way to reproduce:
```diff
diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c
index bd289fa..7b0a5ef 100644
--- a/src/libsystemd-network/test-dhcp6-client.c
+++ b/src/libsystemd-network/test-dhcp6-client.c
@@ -168,7 +168,7 @@ static uint8_t msg_advertise[198] = {
         0x00, 0x17, 0x00, 0x10, 0x20, 0x01, 0x0d, 0xb8,
         0xde, 0xad, 0xbe, 0xef, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x0b,
-        0x03, 0x6c, 0x61, 0x62, 0x05, 0x69, 0x6e, 0x74,
+        0x01, 0x6c, 0x01, 0x62, 0x00, 0x0a, 0x6e, 0x74,
         0x72, 0x61, 0x00, 0x00, 0x1f, 0x00, 0x10, 0x20,
         0x01, 0x0d, 0xb8, 0xde, 0xad, 0xbe, 0xef, 0x00,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
@@ -338,9 +338,7 @@ static int test_advertise_option(sd_event *e) {
         assert_se(!memcmp(addrs, &msg_advertise[124], r * 16));

         r = sd_dhcp6_lease_get_domains(lease, &domains);
-        assert_se(r == 1);
-        assert_se(!strcmp("lab.intra", domains[0]));
-        assert_se(domains[1] == NULL);
+        assert_se(r == -ENOENT);

         r = sd_dhcp6_lease_get_ntp_addrs(lease, &addrs);
         assert_se(r == 1);
```

Fixes:
```
=================================================================
==15043==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x7f13c8564160 in strdup (/lib64/libasan.so.3+0x5a160)
    #1 0x7f13c7caaf69 in strv_extend src/basic/strv.c:552
    #2 0x55f775787230 in dhcp6_option_parse_domainname src/libsystemd-network/dhcp6-option.c:399
    #3 0x55f775788b96 in dhcp6_lease_set_domains src/libsystemd-network/sd-dhcp6-lease.c:225
    #4 0x55f775774b95 in test_advertise_option src/libsystemd-network/test-dhcp6-client.c:287
    #5 0x55f77577883e in main src/libsystemd-network/test-dhcp6-client.c:759
    #6 0x7f13c7589400 in __libc_start_main (/lib64/libc.so.6+0x20400)

Direct leak of 4 byte(s) in 1 object(s) allocated from:
    #0 0x7f13c8564160 in strdup (/lib64/libasan.so.3+0x5a160)
    #1 0x7f13c7caaf69 in strv_extend src/basic/strv.c:552
    #2 0x55f775787230 in dhcp6_option_parse_domainname src/libsystemd-network/dhcp6-option.c:399
    #3 0x55f775788b96 in dhcp6_lease_set_domains src/libsystemd-network/sd-dhcp6-lease.c:225
    #4 0x55f775781348 in client_parse_message src/libsystemd-network/sd-dhcp6-client.c:807
    #5 0x55f775781ba2 in client_receive_advertise src/libsystemd-network/sd-dhcp6-client.c:895
    #6 0x55f775782453 in client_receive_message src/libsystemd-network/sd-dhcp6-client.c:994
    #7 0x7f13c7e447f4 in source_dispatch src/libsystemd/sd-event/sd-event.c:2268
    #8 0x7f13c7e471b0 in sd_event_dispatch src/libsystemd/sd-event/sd-event.c:2627
    #9 0x7f13c7e47ab3 in sd_event_run src/libsystemd/sd-event/sd-event.c:2686
    #10 0x7f13c7e47c21 in sd_event_loop src/libsystemd/sd-event/sd-event.c:2706
    #11 0x55f77577863c in test_client_solicit src/libsystemd-network/test-dhcp6-client.c:737
    #12 0x55f77577884b in main src/libsystemd-network/test-dhcp6-client.c:760
    #13 0x7f13c7589400 in __libc_start_main (/lib64/libc.so.6+0x20400)

SUMMARY: AddressSanitizer: 8 byte(s) leaked in 2 allocation(s).
```

(cherry picked from commit 419eaa8f8d2025bae98c23bdedb434d6dbb025b8)
2018-10-29 21:50:56 +01:00
Lubomir Rintel
cea59c3fd3 systemd: drop xlocale.h include
It is not needed and doesn't exist in glibc 2.26 or other libcs.
systemd removed it in commit 284d1cd0a1 too.

(cherry picked from commit a5d7cf5c4b)
(cherry picked from commit 3b207f9e58)
2018-10-29 21:23:53 +01:00
Thomas Haller
27be61ec79 wifi: fix leaking fake AP in NMDeviceWifi's act_stage1_prepare()
Fixes: 96f40dcdcd
(cherry picked from commit ef61d7909f)
(cherry picked from commit d08530ac4b)
(cherry picked from commit 6c4c12c796)
(cherry picked from commit 4a345b2e78)
(cherry picked from commit ae112d0070)
(cherry picked from commit 0a95b1a593)
(cherry picked from commit 087fb85969)
2018-09-13 16:32:01 +02:00
Thomas Haller
8b4c1cddfe clients: fix appending integer to result in nmc_property_set_bytes()
(cherry picked from commit d76c190dc7)
(cherry picked from commit 06d3c95e4f)
(cherry picked from commit fb9c302af7)
2017-05-23 16:44:07 +02:00
Beniamino Galvani
d4cbae9aa0 clients: fix setter for 802-1x.password-raw
The property is a GBytes, not a GByteArray.

https://bugzilla.gnome.org/show_bug.cgi?id=782836
(cherry picked from commit 30393ee236)
(cherry picked from commit cc6c9468fc)
(cherry picked from commit e4750efb23)
2017-05-23 16:44:06 +02:00
Thomas Haller
9cf9e21247 policy: fix memleak in lookup_callback() and cancelling
When the operation is cancelled, we must not touch user_data. Note that
NM_POLICY_GET_PRIVATE() theoretically doesn't dereference the pointer
(does it?) but doing pointer arithmetic on a dangling pointer is a very
ugly thing to do.

And of course, the memleak.

Fixes: 5c716c8af8
Fixes: a2cdf63204
(cherry picked from commit 3215508293)
(cherry picked from commit f1469558c0)
(cherry picked from commit faba5b7078)
2017-05-02 18:32:24 +02:00
Thomas Haller
0ae3131534 device: fix restricting Generic connection by interface-name
NMDeviceGeneric:check_connection_compatible() doesn't check for a
matching interface name. It relies on the parent implementation to
do that.

The parent implementation calls nm_manager_get_connection_iface().
That fails for NM_SETTING_GENERIC_SETTING_NAME, because that one has
no factory. Maybe this imbalance of having no factory for the Generic device
is wrong, but usually factories only match a distinct set of device
types, while the generic factory would handle them all (as last resort).

Without this, activating a generic connection might activate the
wrong interface.

(cherry picked from commit 3876b10a47)
(cherry picked from commit 753a2cc4d9)
(cherry picked from commit bd72919b47)
(cherry picked from commit bd21d1054a)
2017-04-26 21:19:59 +02:00
Lubomir Rintel
2623afb442 sparse: avoid clash with __bitwise and __force from 4.10 linux/types.h
It also used __bitwise and __force. It seems easier to rename
our versions since they are local to this one single header.

Also, undefine them afteerwards, so that we don't pollute the
preprocessor macro namespace.

https://github.com/systemd/systemd/pull/5061
(cherry picked from commit 13b2ac2214)
(cherry picked from commit 2f92d8cee1)
2017-04-25 13:07:07 +02:00
Thomas Haller
90d341e300 libnm: fix memleak of GUdevDevice in get_bus_name()
Fixes: f7b1b28202
(cherry picked from commit c033330c41)
(cherry picked from commit 6311bf6666)
(cherry picked from commit 42eb57c0c1)
2017-03-20 11:35:42 +01:00
Lubomir Rintel
b45fd582cd libnm: order the property updates
Don't let a later property update finish than the sooner one.

This wouldn't happen most of time, apart from a special case when the
latter update of a object array property is to an empty list.
In that case the latter update would complete sooner and when the
earlier update finishes the list would contain objects which are
supposed to be gone already.

(cherry picked from commit 7007c9853c)
(cherry picked from commit 9cef2f5e83)
2017-03-16 17:57:51 +01:00
Lubomir Rintel
9be3e7df02 nm-object: initialize the object buffer to zero
(cherry picked from commit df46c59775)
(cherry picked from commit b2059059fd)
2017-03-16 17:57:12 +01:00
Francesco Giudici
984c634cdb libnm-core: remove INFERRABLE flag from dhcp-hostname property
When assuming a dhcp connection don't consider the DHCP "Host Name"
Option (12) passed in the DHCP request for the match of the available
connections.

https://bugzilla.redhat.com/show_bug.cgi?id=1393997
(cherry picked from commit 0ce7da1e22)
(cherry picked from commit 86490fbb1d)
2017-02-06 17:58:26 +01:00
Thomas Haller
4e53619502 build: add missing GLIB_CFLAGS for compiling adsl device plugin
(cherry picked from commit cd267cceed)
(cherry picked from commit 38cef9de7a)
(cherry picked from commit fa142d856c)
2017-01-29 12:45:53 +01:00
mirh
493da97d2d build: fix compilation with Python3
has_key() has long been dropped
https://docs.python.org/3.1/whatsnew/3.0.html#builtins

Should still work with anything from 2.3 onwards

https://github.com/NetworkManager/NetworkManager/pull/11
(cherry picked from commit 48402cd526)
(cherry picked from commit b0ad0ff4d7)
2017-01-19 14:22:22 +01:00
Lubomir Rintel
98083d63bd build: fix build with older gi
Fixes: 6c96aafaa9
(cherry picked from commit 22722b7732)
(cherry picked from commit b916d9dfe0)
(cherry picked from commit 263dc2dfd1)
2017-01-19 14:20:47 +01:00
Lubomir Rintel
d7aecc644a build: make the doc generator find the right libnm.so
At some point gobject-introspection added an API to add a library path
and stopped honoring the LD_LIBRARY_PATH (a bug, according to GI
documentation?).

(cherry picked from commit 6c96aafaa9)
(cherry picked from commit 2ee8462774)
(cherry picked from commit bc2e0269a4)
2017-01-19 14:20:46 +01:00
Thomas Haller
1f48f89459 supplicant: fix detection of EAP-FAST
At least with my supplicant, the capability is called
all-upper-case "FAST".

The check used case-insensitive, but that was broken
by a previous change.

Fixes: 9f5f141100
(cherry picked from commit 66ff601ecf)
(cherry picked from commit 1caae3743d)
(cherry picked from commit d0ee773221)
2017-01-18 19:00:51 +01:00
Beniamino Galvani
ff6ef0d696 vpn: add device route to VPN gateway if parent has no gateway
We set a dedicated route to reach the VPN gateway only if the parent
device has a gateway. If the parent device doesn't have a gateway (for
example in case of GSM connections) and the VPN gets the default
route, the VPN gateway will be contacted through the VPN itself, which
obviously doesn't work.

Set up a device route if the parent device doesn't provide a gateway.

https://bugzilla.redhat.com/show_bug.cgi?id=1403660
(cherry picked from commit ae5adc9e21)
(cherry picked from commit 48db5806f3)
2017-01-07 15:18:21 +01:00
Thomas Haller
92f057ca1d keyfile: fix memleak in keyfile reader's read_array_of_uint()
Fixes: 9559a7a260
(cherry picked from commit 8239edbb9b)
(cherry picked from commit 8a281bf7b4)
2017-01-05 12:33:54 +01:00
Lubomir Rintel
3807e2b3bc dhcp: drop an unused fariable
Fixes: 1c58ce0d74
Fixes: 58c6c12f47
(cherry picked from commit f9821a1669)
2017-01-04 10:03:30 +01:00
Thomas Haller
0961c4b969 libnm/docs: merge fix for generating API documentation fro enums (bgo#776848)
https://bugzilla.gnome.org/show_bug.cgi?id=776848

(cherry picked from commit 44ab504cf7)
(cherry picked from commit c5650d3500)
2017-01-04 09:56:12 +01:00
Thomas Haller
205f4ce025 libnm: explicitly set enum values in public nm-dbus-interface.h headers
Previously, due to a bug in "tools/enums-to-docbook.pl", enum values
without explicit numeric value were wrongly parsed. That is fixed,
but still explicitly set the value in the public header.

(cherry picked from commit 9d2207b46d)
(cherry picked from commit 4369f102f6)
2017-01-04 09:54:46 +01:00
Thomas Haller
70d14820e6 docs: fix handling enums without explicit numeric value in "tools/enums-to-docbook.pl"
Previously, an enum that didn't explicitly specify a numeric value
would wrongly start counting at 1.

E.g.

  typedef enum {
     MY_VAL,
  } Name;

would result in documentation with MY_VAL=1.

https://bugzilla.gnome.org/show_bug.cgi?id=776848
(cherry picked from commit 36ec46e8f8)
(cherry picked from commit 26f0d68e82)
2017-01-04 09:54:45 +01:00
Beniamino Galvani
e4d263f1db libnm: make waiting objects fail when an object initialization fails
Previously, when the load of an object failed and there were other
objects waiting for it, those objects would remain waiting
forever. Make them fail as well.

(cherry picked from commit f4a0ab757f)
2017-01-02 08:47:11 +01:00
Dan Williams
3b225f893e wifi: don't request new PSK for locally-generated WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY errors
This usually indicates that the driver missed beacons from the AP, due to driver bugs
or faulty power-save management.  It doesn't mean that the PSK is wrong.

(cherry picked from commit 0c5aa6e48b)
2016-12-20 10:07:34 -06:00
Beniamino Galvani
e4a9bcde82 dhcp: merge branch 'th/dhcp-helper-sync-notify-rh1372854'
https://bugzilla.redhat.com/show_bug.cgi?id=1372854
(cherry picked from commit 42519abdbf)
2016-12-12 15:27:51 +01:00
Thomas Haller
d6ee12bd7c dhcp: call synchronous Notify D-Bus method from nm-dhcp-helper
A D-Bus signal is asynchronous and it can happen that nm-dhcp-helper
emits the "Event" signal before the server is able to register a handler:

   NM_DHCP_HELPER=/usr/libexec/nm-dhcp-helper
   nmcli general logging level TRACE
   for i in `seq 1 500`; do $NM_DHCP_HELPER & done
   journalctl -u NetworkManager --since '1 min ago' | grep "didn't have associated interface" | wc -l
    499

Avoid that, by calling the synchronous D-Bus method "Notify".

Interestingly, this race seem to exist since 2007.

Actually, we called g_dbus_connection_signal_subscribe() from inside
GDBusServer:new-connection signal. So it is not clear how such a race
could exist. I was not able to reproduce it by putting a sleep
before g_dbus_connection_signal_subscribe(). On the other hand, there
is bug rh#1372854 and above reproducer which strongly indicates that
events can be lost under certain circumstances.
Now we instead g_dbus_connection_register_object() from the
new-connection signal. According to my tests there was no more race
as also backed by glib's documentation. Still, keep a simple retry-loop
in nm-dhcp-helper just to be sure.

https://bugzilla.redhat.com/show_bug.cgi?id=1372854
https://bugzilla.redhat.com/show_bug.cgi?id=1373276
(cherry picked from commit 2856a658b3)
2016-12-12 09:34:45 +01:00
Thomas Haller
cb0d31229c dhcp: add new header "nm-dhcp-helper-api.h"
(cherry picked from commit 7684b68c49)
2016-12-12 09:34:45 +01:00
Thomas Haller
704e5a7709 dhcp-helper: refactor logging to use logging macros
(cherry picked from commit cc89996c9e)
2016-12-12 09:34:45 +01:00
Thomas Haller
602163346e dhcp-helper: refactor error handling
Don't exit(1) from fatal_error() because that skips destroying
local variables in main(). Just return regularly.

(cherry picked from commit bb489163db)
2016-12-12 09:34:45 +01:00
Thomas Haller
99ec04debd dhcp-listener/trivial: rename field to track connections in NMDhcpListener
It's not "signal-handles", as it currently tracks the registration ID of
type int. Rename it, it is effectively the list of connections that we
track.

(cherry picked from commit 2dd3a5245f)
2016-12-12 09:34:45 +01:00
Thomas Haller
b63ef470af dhcp-listener: add logging macros to nm-dhcp-listener.c
(cherry picked from commit d37cd04fe0)
2016-12-12 09:34:45 +01:00
Thomas Haller
20406d1a1d dhcp-listener: refactor type definition and embed private data in @self
(cherry picked from commit 822f01a8fd)
2016-12-12 09:34:44 +01:00
Thomas Haller
3c690e751f shared: add _NM_GET_PRIVATE() macro
(cherry picked from commit 2cae9ba348)
2016-12-12 09:34:44 +01:00
Thomas Haller
a2c39cddbf shared: add NM_MIN()/NM_MAX() macros to replace glib's MIN()/MAX()
(cherry picked from commit b2016fd2a5)
2016-12-12 09:34:44 +01:00
Thomas Haller
58c6c12f47 dhcp: prefix logging messages with "dhcp"
(cherry picked from commit 1c58ce0d74)
2016-12-12 09:34:44 +01:00
Thomas Haller
11b667bdc2 shared: add also "shared/nm-utils/nm-vpn-plugin-macros.h"
It has the very similar purpose as "nm-utils/nm-vpn-plugin-utils.[ch]", except
that is is header-only.

(cherry picked from commit af507cd089)
2016-12-12 09:34:44 +01:00
Thomas Haller
5d5367462d device: fix activation_source_schedule() for rescheduling the same function
Fixes: 78ca961c0f
(cherry picked from commit 994f1ca96e)
(cherry picked from commit baac746abb)
2016-12-08 13:56:43 +01:00
Beniamino Galvani
567220aa83 release: bump version to 1.2.7 (development) 2016-12-02 14:37:04 +01:00
Beniamino Galvani
0001318d9f release: bump version to 1.2.6 2016-12-02 14:04:00 +01:00
Beniamino Galvani
6fe4aa4628 release: update NEWS 2016-12-02 14:00:56 +01:00