mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
network: escape quotes for dsmasq conf contents
dnsmasq conf file contents needs to have quotes escaped for it to work. Because of this, the network-create/start for a network with quotes in the name fails. The patch escapes strings for the entries that go into the conf file. Signed-off-by: Shivaprasad G Bhat <sbhat@linux.vnet.ibm.com>
This commit is contained in:
parent
6a28687b6e
commit
310c98d0c4
@ -151,6 +151,7 @@ addnhostsNew(const char *name,
|
|||||||
const char *config_dir)
|
const char *config_dir)
|
||||||
{
|
{
|
||||||
dnsmasqAddnHostsfile *addnhostsfile;
|
dnsmasqAddnHostsfile *addnhostsfile;
|
||||||
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
if (VIR_ALLOC(addnhostsfile) < 0)
|
if (VIR_ALLOC(addnhostsfile) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -158,13 +159,20 @@ addnhostsNew(const char *name,
|
|||||||
addnhostsfile->hosts = NULL;
|
addnhostsfile->hosts = NULL;
|
||||||
addnhostsfile->nhosts = 0;
|
addnhostsfile->nhosts = 0;
|
||||||
|
|
||||||
if (virAsprintf(&addnhostsfile->path, "%s/%s.%s", config_dir, name,
|
virBufferAsprintf(&buf, "%s", config_dir);
|
||||||
DNSMASQ_ADDNHOSTSFILE_SUFFIX) < 0)
|
virBufferEscapeString(&buf, "/%s", name);
|
||||||
|
virBufferAsprintf(&buf, ".%s", DNSMASQ_ADDNHOSTSFILE_SUFFIX);
|
||||||
|
|
||||||
|
if (virBufferCheckError(&buf) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
if (!(addnhostsfile->path = virBufferContentAndReset(&buf)))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
return addnhostsfile;
|
return addnhostsfile;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
virBufferFreeAndReset(&buf);
|
||||||
addnhostsFree(addnhostsfile);
|
addnhostsFree(addnhostsfile);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -357,6 +365,7 @@ hostsfileNew(const char *name,
|
|||||||
const char *config_dir)
|
const char *config_dir)
|
||||||
{
|
{
|
||||||
dnsmasqHostsfile *hostsfile;
|
dnsmasqHostsfile *hostsfile;
|
||||||
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
if (VIR_ALLOC(hostsfile) < 0)
|
if (VIR_ALLOC(hostsfile) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -364,13 +373,19 @@ hostsfileNew(const char *name,
|
|||||||
hostsfile->hosts = NULL;
|
hostsfile->hosts = NULL;
|
||||||
hostsfile->nhosts = 0;
|
hostsfile->nhosts = 0;
|
||||||
|
|
||||||
if (virAsprintf(&hostsfile->path, "%s/%s.%s", config_dir, name,
|
virBufferAsprintf(&buf, "%s", config_dir);
|
||||||
DNSMASQ_HOSTSFILE_SUFFIX) < 0)
|
virBufferEscapeString(&buf, "/%s", name);
|
||||||
|
virBufferAsprintf(&buf, ".%s", DNSMASQ_HOSTSFILE_SUFFIX);
|
||||||
|
|
||||||
|
if (virBufferCheckError(&buf) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
if (!(hostsfile->path = virBufferContentAndReset(&buf)))
|
||||||
|
goto error;
|
||||||
return hostsfile;
|
return hostsfile;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
virBufferFreeAndReset(&buf);
|
||||||
hostsfileFree(hostsfile);
|
hostsfileFree(hostsfile);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -45,12 +45,19 @@ VIR_LOG_INIT("util.pidfile");
|
|||||||
|
|
||||||
char *virPidFileBuildPath(const char *dir, const char* name)
|
char *virPidFileBuildPath(const char *dir, const char* name)
|
||||||
{
|
{
|
||||||
char *pidfile;
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
if (virAsprintf(&pidfile, "%s/%s.pid", dir, name) < 0)
|
virBufferAsprintf(&buf, "%s", dir);
|
||||||
|
virBufferEscapeString(&buf, "/%s.pid", name);
|
||||||
|
|
||||||
|
if (virBufferCheckError(&buf) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
return virBufferContentAndReset(&buf);
|
||||||
|
|
||||||
|
error:
|
||||||
|
virBufferFreeAndReset(&buf);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return pidfile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
20
tests/networkxml2confdata/nat-network-name-with-quotes.conf
Normal file
20
tests/networkxml2confdata/nat-network-name-with-quotes.conf
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
|
||||||
|
##OVERWRITTEN AND LOST. Changes to this configuration should be made using:
|
||||||
|
## virsh net-edit default"with"quotes"
|
||||||
|
## or other application using the libvirt API.
|
||||||
|
##
|
||||||
|
## dnsmasq conf file created by libvirt
|
||||||
|
strict-order
|
||||||
|
except-interface=lo
|
||||||
|
bind-interfaces
|
||||||
|
listen-address=192.168.122.1
|
||||||
|
listen-address=192.168.123.1
|
||||||
|
listen-address=fc00:db8:ac10:fe01::1
|
||||||
|
listen-address=fc00:db8:ac10:fd01::1
|
||||||
|
listen-address=10.24.10.1
|
||||||
|
srv-host=_name._tcp
|
||||||
|
dhcp-range=192.168.122.2,192.168.122.254
|
||||||
|
dhcp-no-override
|
||||||
|
dhcp-lease-max=253
|
||||||
|
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default"with"quotes".hostsfile
|
||||||
|
addn-hosts=/var/lib/libvirt/dnsmasq/default"with"quotes".addnhosts
|
26
tests/networkxml2confdata/nat-network-name-with-quotes.xml
Normal file
26
tests/networkxml2confdata/nat-network-name-with-quotes.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<network>
|
||||||
|
<name>default"with"quotes"</name>
|
||||||
|
<uuid>81ff0d90-c91e-6742-64da-4a736edb9a9b</uuid>
|
||||||
|
<forward dev='eth1' mode='nat'>
|
||||||
|
<interface dev='eth1'/>
|
||||||
|
</forward>
|
||||||
|
<bridge name='virbr0' stp='on' delay='0'/>
|
||||||
|
<dns>
|
||||||
|
<srv service='name' protocol='tcp'/>
|
||||||
|
</dns>
|
||||||
|
<ip address='192.168.122.1' netmask='255.255.255.0'>
|
||||||
|
<dhcp>
|
||||||
|
<range start='192.168.122.2' end='192.168.122.254'/>
|
||||||
|
<host mac='00:16:3e:77:e2:ed' name='a.example.com' ip='192.168.122.10'/>
|
||||||
|
<host mac='00:16:3e:3e:a9:1a' name='b.example.com' ip='192.168.122.11'/>
|
||||||
|
</dhcp>
|
||||||
|
</ip>
|
||||||
|
<ip family='ipv4' address='192.168.123.1' netmask='255.255.255.0'>
|
||||||
|
</ip>
|
||||||
|
<ip family='ipv6' address='fc00:db8:ac10:fe01::1' prefix='64'>
|
||||||
|
</ip>
|
||||||
|
<ip family='ipv6' address='fc00:db8:ac10:fd01::1' prefix='64'>
|
||||||
|
</ip>
|
||||||
|
<ip family='ipv4' address='10.24.10.1'>
|
||||||
|
</ip>
|
||||||
|
</network>
|
@ -115,6 +115,7 @@ mymain(void)
|
|||||||
DO_TEST("netboot-network", restricted);
|
DO_TEST("netboot-network", restricted);
|
||||||
DO_TEST("netboot-proxy-network", restricted);
|
DO_TEST("netboot-proxy-network", restricted);
|
||||||
DO_TEST("nat-network-dns-srv-record-minimal", restricted);
|
DO_TEST("nat-network-dns-srv-record-minimal", restricted);
|
||||||
|
DO_TEST("nat-network-name-with-quotes", restricted);
|
||||||
DO_TEST("routed-network", full);
|
DO_TEST("routed-network", full);
|
||||||
DO_TEST("nat-network", dhcpv6);
|
DO_TEST("nat-network", dhcpv6);
|
||||||
DO_TEST("nat-network-dns-txt-record", full);
|
DO_TEST("nat-network-dns-txt-record", full);
|
||||||
|
Loading…
Reference in New Issue
Block a user