This new function can be used to check if e.g. name of XML node don't contains forbidden chars like "/" or new-line. --- src/conf/network_conf.c | 2 +- src/libvirt_private.syms | 1 + src/util/virstring.c | 9 +++++++++ src/util/virstring.h | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index aa39776..949d138 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2117,7 +2117,7 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt) goto error; } - if (strchr(def->name, '/')) { + if (virStringHasChars(def->name, "/")) { virReportError(VIR_ERR_XML_ERROR, _("name %s cannot contain '/'"), def->name); goto error; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 55b6a24..6f41234 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2435,6 +2435,7 @@ virStringEncodeBase64; virStringFreeList; virStringFreeListCount; virStringGetFirstWithPrefix; +virStringHasChars; virStringHasControlChars; virStringIsEmpty; virStringIsPrintable; diff --git a/src/util/virstring.c b/src/util/virstring.c index 4a70620..7799d87 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -975,6 +975,15 @@ virStringStripIPv6Brackets(char *str) } +bool +virStringHasChars(const char *str, const char *chars) +{ + if (strpbrk(str, chars)) + return true; + return false; +} + + static const char control_chars[] = "\x01\x02\x03\x04\x05\x06\x07" "\x08" /* \t \n */ "\x0B\x0C" /* \r */ "\x0E\x0F" diff --git a/src/util/virstring.h b/src/util/virstring.h index 8854d5f..7f2c96d 100644 --- a/src/util/virstring.h +++ b/src/util/virstring.h @@ -272,6 +272,7 @@ char *virStringReplace(const char *haystack, ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); void virStringStripIPv6Brackets(char *str); +bool virStringHasChars(const char *str, const char *chars); bool virStringHasControlChars(const char *str); void virStringStripControlChars(char *str); -- 2.10.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list