~mariusko/network-manager/ubuntu.quantal_backported_patches

« back to all changes in this revision

Viewing changes to debian/patches/dnsmasq-dbus-updates.patch

  • Committer: Mathieu Trudel-Lapierre
  • Date: 2012-08-03 15:30:29 UTC
  • Revision ID: mathieu-tl@ubuntu.com-20120803153029-ffmhxthjq0rplcv1
debian/patches/dnsmasq-dbus-updates.patch: don't crash when building the
dbus message for updating dnsmasq's nameservers. (LP: #1031274)

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
Subject: [PATCH] dns: update dnsmasq nameservers via its DBus SetServers method
5
5
 
6
6
---
7
 
 src/dns-manager/nm-dns-dnsmasq.c |  350 ++++++++++++++++++++++++---------------
 
7
 src/dns-manager/nm-dns-dnsmasq.c |  354 ++++++++++++++++++++++++---------------
8
8
 src/dns-manager/nm-dns-manager.c |   24 ++
9
9
 src/dns-manager/nm-dns-plugin.c  |   16 +
10
10
 src/dns-manager/nm-dns-plugin.h  |    1 
11
 
 4 files changed, 261 insertions(+), 130 deletions(-)
 
11
 4 files changed, 265 insertions(+), 130 deletions(-)
12
12
 
13
13
Index: b/src/dns-manager/nm-dns-dnsmasq.c
14
14
===================================================================
61
61
 
62
62
        if (split) {
63
63
                char **domains, **iter;
64
 
@@ -86,17 +95,17 @@ add_ip4_config (GString *str, NMIP4Confi
 
64
@@ -86,17 +95,18 @@ add_ip4_config (GString *str, NMIP4Confi
65
65
                 * per domain (and the manpage says this too) so only use the first
66
66
                 * nameserver here.
67
67
                 */
80
80
-                       g_string_append_printf (str, "server=/%s/%s\n",
81
81
-                                                   nm_ip4_config_get_search (ip4, i),
82
82
-                                                   buf);
 
83
+                       char *search = nm_ip4_config_get_search (ip4, i);
83
84
+                       dbus_message_append_args (message,
84
 
+                                                 DBUS_TYPE_STRING, nm_ip4_config_get_search (ip4, i),
 
85
+                                                 DBUS_TYPE_STRING, &search,
85
86
+                                                 DBUS_TYPE_INVALID);
86
87
                        added = TRUE;
87
88
                }
88
89
 
89
 
@@ -104,9 +113,9 @@ add_ip4_config (GString *str, NMIP4Confi
 
90
@@ -104,9 +114,10 @@ add_ip4_config (GString *str, NMIP4Confi
90
91
                        /* If not searches, use any domains */
91
92
                        n = nm_ip4_config_get_num_domains (ip4);
92
93
                        for (i = 0; i < n; i++) {
93
94
-                               g_string_append_printf (str, "server=/%s/%s\n",
94
95
-                                                                   nm_ip4_config_get_domain (ip4, i),
95
96
-                                                                   buf);
 
97
+                               char *domain = nm_ip4_config_get_domain (ip4, i);
96
98
+                               dbus_message_append_args (message,
97
 
+                                                         DBUS_TYPE_STRING, nm_ip4_config_get_domain (ip4, i),
 
99
+                                                         DBUS_TYPE_STRING, &domain,
98
100
+                                                         DBUS_TYPE_INVALID);
99
101
                                added = TRUE;
100
102
                        }
101
103
                }
102
 
@@ -117,7 +126,9 @@ add_ip4_config (GString *str, NMIP4Confi
 
104
@@ -117,7 +128,9 @@ add_ip4_config (GString *str, NMIP4Confi
103
105
                domains = nm_dns_utils_get_ip4_rdns_domains (ip4);
104
106
                if (domains) {
105
107
                        for (iter = domains; iter && *iter; iter++)
106
108
-                               g_string_append_printf (str, "server=/%s/%s\n", *iter, buf);
107
109
+                               dbus_message_append_args (message,
108
 
+                                                         DBUS_TYPE_STRING, *iter,
 
110
+                                                         DBUS_TYPE_STRING, &(*iter),
109
111
+                                                         DBUS_TYPE_INVALID);
110
112
                        g_strfreev (domains);
111
113
                        added = TRUE;
112
114
                }
113
 
@@ -127,65 +138,18 @@ add_ip4_config (GString *str, NMIP4Confi
 
115
@@ -127,65 +140,18 @@ add_ip4_config (GString *str, NMIP4Confi
114
116
        if (!added) {
115
117
                n = nm_ip4_config_get_num_nameservers (ip4);
116
118
                for (i = 0; i < n; i++) {
181
183
 {
182
184
        const struct in6_addr *addr;
183
185
        char *buf;
184
 
@@ -201,16 +165,31 @@ add_ip6_config (GString *str, NMIP6Confi
 
186
@@ -201,16 +167,32 @@ add_ip6_config (GString *str, NMIP6Confi
185
187
                 * the first nameserver here.
186
188
                 */
187
189
                addr = nm_ip6_config_get_nameserver (ip6, 0);
213
215
-                       g_string_append_printf (str, "server=/%s/%s\n",
214
216
-                                                   nm_ip6_config_get_search (ip6, i),
215
217
-                                                   buf);
 
218
+                       char *search = nm_ip6_config_get_search (ip6, i);
216
219
+                       dbus_message_append_args (message,
217
 
+                                                 DBUS_TYPE_STRING, nm_ip6_config_get_search (ip6, i),
 
220
+                                                 DBUS_TYPE_STRING, &search,
218
221
+                                                 DBUS_TYPE_INVALID);
219
222
                        added = TRUE;
220
223
                }
221
224
 
222
 
@@ -218,14 +197,12 @@ add_ip6_config (GString *str, NMIP6Confi
 
225
@@ -218,14 +200,13 @@ add_ip6_config (GString *str, NMIP6Confi
223
226
                        /* If not searches, use any domains */
224
227
                        n = nm_ip6_config_get_num_domains (ip6);
225
228
                        for (i = 0; i < n; i++) {
226
229
-                               g_string_append_printf (str, "server=/%s/%s\n",
227
230
-                                                                   nm_ip6_config_get_domain (ip6, i),
228
231
-                                                                   buf);
 
232
+                               char *domain = nm_ip6_config_get_domain (ip6, i);
229
233
+                               dbus_message_append_args (message,
230
 
+                                                         DBUS_TYPE_STRING, nm_ip6_config_get_domain (ip6, i),
 
234
+                                                         DBUS_TYPE_STRING, &domain,
231
235
+                                                         DBUS_TYPE_INVALID);
232
236
                                added = TRUE;
233
237
                        }
237
241
        }
238
242
 
239
243
        /* If no searches or domains, just add the namservers */
240
 
@@ -233,11 +210,24 @@ add_ip6_config (GString *str, NMIP6Confi
 
244
@@ -233,11 +214,24 @@ add_ip6_config (GString *str, NMIP6Confi
241
245
                n = nm_ip6_config_get_num_nameservers (ip6);
242
246
                for (i = 0; i < n; i++) {
243
247
                        addr = nm_ip6_config_get_nameserver (ip6, i);
267
271
                }
268
272
        }
269
273
 
270
 
@@ -245,6 +235,66 @@ add_ip6_config (GString *str, NMIP6Confi
 
274
@@ -245,6 +239,66 @@ add_ip6_config (GString *str, NMIP6Confi
271
275
 }
272
276
 
273
277
 static gboolean
334
338
 update (NMDnsPlugin *plugin,
335
339
         const GSList *vpn_configs,
336
340
         const GSList *dev_configs,
337
 
@@ -253,23 +303,29 @@ update (NMDnsPlugin *plugin,
 
341
@@ -253,23 +307,29 @@ update (NMDnsPlugin *plugin,
338
342
         const char *iface)
339
343
 {
340
344
        NMDnsDnsmasq *self = NM_DNS_DNSMASQ (plugin);
376
380
 
377
381
        /* Work on a copy of the vpn_configs list because we might want to remove
378
382
         * some items from it, yet not affect other DNS plugins that might run
379
 
@@ -286,9 +342,9 @@ update (NMDnsPlugin *plugin,
 
383
@@ -286,9 +346,9 @@ update (NMDnsPlugin *plugin,
380
384
                        might_default = !nm_ip6_config_get_never_default (iter->data);
381
385
                if (might_default) {
382
386
                        if (NM_IS_IP4_CONFIG (iter->data))
388
392
                        vpn_configs_copy = g_slist_remove (vpn_configs_copy, iter->data);
389
393
                        break;
390
394
                }
391
 
@@ -297,9 +353,9 @@ update (NMDnsPlugin *plugin,
 
395
@@ -297,9 +357,9 @@ update (NMDnsPlugin *plugin,
392
396
        /* Use split DNS for remaining VPN configs */
393
397
        for (iter = (GSList *) vpn_configs_copy; iter; iter = g_slist_next (iter)) {
394
398
                if (NM_IS_IP4_CONFIG (iter->data))
400
404
        }
401
405
 
402
406
        /* Now add interface configs without split DNS, unless some VPN
403
 
@@ -310,9 +366,9 @@ update (NMDnsPlugin *plugin,
 
407
@@ -310,9 +370,9 @@ update (NMDnsPlugin *plugin,
404
408
        if (!might_default) {
405
409
                for (iter = (GSList *) dev_configs; iter; iter = g_slist_next (iter)) {
406
410
                        if (NM_IS_IP4_CONFIG (iter->data))
412
416
                }
413
417
        }
414
418
 
415
 
@@ -321,48 +377,64 @@ update (NMDnsPlugin *plugin,
 
419
@@ -321,48 +381,64 @@ update (NMDnsPlugin *plugin,
416
420
         */
417
421
        for (iter = (GSList *) other_configs; iter; iter = g_slist_next (iter)) {
418
422
                if (NM_IS_IP4_CONFIG (iter->data))
506
510
 static const char *
507
511
 dm_exit_code_to_msg (int status)
508
512
 {
509
 
@@ -440,13 +512,31 @@ nm_dns_dnsmasq_new (void)
 
513
@@ -440,13 +516,31 @@ nm_dns_dnsmasq_new (void)
510
514
 static void
511
515
 nm_dns_dnsmasq_init (NMDnsDnsmasq *self)
512
516
 {