[PATCH v2 1/8] viruri: Search params case insensitively

Michal Privoznik mprivozn at redhat.com
Wed Feb 8 15:19:07 UTC 2023


Our URI handling code (doRemoteOpen() specifically), uses case
insensitive parsing of query part of URI. For instance:

  qemu:///system?socket=/some/path
  qemu:///system?SoCkEt=/some/path

are the same URI. Even though the latter is probably not used
anywhere, let's switch to STRCASEEQ() instead of STREQ() at two
places: virURIGetParam() and virURICheckUnixSocket().

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
Reviewed-by: Peter Krempa <pkrempa at redhat.com>
---
 src/util/viruri.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/util/viruri.c b/src/util/viruri.c
index 88bb0cc1f8..4afdd30c59 100644
--- a/src/util/viruri.c
+++ b/src/util/viruri.c
@@ -365,13 +365,24 @@ virURIResolveAlias(virConf *conf, const char *alias, char **uri)
 }
 
 
+/**
+ * virURIGetParam:
+ * @uri: URI to get parameter from
+ * @name: name of the parameter
+ *
+ * For parsed @uri, find parameter with name @name and return its value. The
+ * string comparison is case insensitive, by design.
+ *
+ * Returns: a value on success, or
+ *          NULL on error (with error reported)
+ */
 const char *
 virURIGetParam(virURI *uri, const char *name)
 {
     size_t i;
 
     for (i = 0; i < uri->paramsCount; i++) {
-        if (STREQ(uri->params[i].name, name))
+        if (STRCASEEQ(uri->params[i].name, name))
             return uri->params[i].value;
     }
 
@@ -389,6 +400,8 @@ virURIGetParam(virURI *uri, const char *name)
  * scenario the socket might be proxied to a remote server even though the URI
  * looks like it is only local.
  *
+ * The "socket" parameter is looked for in case insensitive manner, by design.
+ *
  * Returns: true if the URI might be proxied to a remote server
  */
 bool
@@ -403,7 +416,7 @@ virURICheckUnixSocket(virURI *uri)
         return false;
 
     for (i = 0; i < uri->paramsCount; i++) {
-        if (STREQ(uri->params[i].name, "socket"))
+        if (STRCASEEQ(uri->params[i].name, "socket"))
             return true;
     }
 
-- 
2.39.1



More information about the libvir-list mailing list