From 39df9d2f12829a8f1e50d78d5952ba367d6c3343 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Mon, 23 Feb 2015 13:19:16 +0100 Subject: [PATCH] network_conf: Forbid commas in DNS TXT 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: 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 --- src/conf/network_conf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index dce3360a7a..3d8bf054ff 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.47.2