[libvirt] [PATCH] network_conf: Forbid commas in DNS TXT

Martin Kletzander mkletzan at redhat.com
Tue Feb 24 10:17:53 UTC 2015


On Mon, Feb 23, 2015 at 01:40:25PM +0100, Michal Privoznik wrote:
>https://bugzilla.redhat.com/show_bug.cgi?id=1151942
>
>While the restriction doesn't have origin in any RFC, it matters
>to us while constructing the dnsmasq config file (or command line
>previously). For better picture, this is how the corresponding
>part of network XML look like:
>
>  <dns>
>    <forwarder addr='8.8.4.4'/>
>    <txt name='example' value='example value'/>
>  </dns>
>
>And this is how the config file looks like then:
>
>  server=8.8.4.4
>  txt-record=example,example value
>
>Now we can see why there can't be any commas in the TXT name.
>They are used by dnsmasq to separate @name and @value.
>
>Funny, we have it in the documentation, but the code (which was
>pushed back in 2011) didn't reflect that.
>
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
> src/conf/network_conf.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>

ACK, might be worth reworking our networkxml2whatever test to do
fail-checks too and add it there.  Not required for this patch,
though.

>diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
>index dce3360..3d8bf05 100644
>--- a/src/conf/network_conf.c
>+++ b/src/conf/network_conf.c
>@@ -1057,15 +1057,17 @@ virNetworkDNSTxtDefParseXML(const char *networkName,
>                             virNetworkDNSTxtDefPtr def,
>                             bool partialOkay)
> {
>+    const char *bad = " ,";
>+
>     if (!(def->name = virXMLPropString(node, "name"))) {
>         virReportError(VIR_ERR_XML_DETAIL,
>                        _("missing required name attribute in DNS TXT record "
>                          "of network %s"), networkName);
>         goto error;
>     }
>-    if (strchr(def->name, ' ') != NULL) {
>+    if (strcspn(def->name, bad) != strlen(def->name)) {
>         virReportError(VIR_ERR_XML_DETAIL,
>-                       _("prohibited space character in DNS TXT record "
>+                       _("prohibited character in DNS TXT record "
>                          "name '%s' of network %s"), def->name, networkName);
>         goto error;
>     }
>--
>2.0.5
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150224/28b4d6c2/attachment-0001.sig>


More information about the libvir-list mailing list