[libvirt PATCH 02/11] virbuffer: Simplify virBufferEscapeShell()

Andrea Bolognani abologna at redhat.com
Fri Feb 11 17:39:10 UTC 2022


We can exit early when the input is an empty string, and we can
avoid storing the string length in a variable since we only use
that information once.

Signed-off-by: Andrea Bolognani <abologna at redhat.com>
---
 src/util/virbuffer.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/util/virbuffer.c b/src/util/virbuffer.c
index a4834174a1..19cf775a8c 100644
--- a/src/util/virbuffer.c
+++ b/src/util/virbuffer.c
@@ -552,7 +552,6 @@ virBufferURIEncodeString(virBuffer *buf, const char *str)
 void
 virBufferEscapeShell(virBuffer *buf, const char *str)
 {
-    int len;
     g_autofree char *escaped = NULL;
     char *out;
     const char *cur;
@@ -560,21 +559,19 @@ virBufferEscapeShell(virBuffer *buf, const char *str)
     if ((buf == NULL) || (str == NULL))
         return;
 
-    /* Only quote if str includes shell metacharacters. */
-    if (*str && !strpbrk(str, "\r\t\n !\"#$&'()*;<>?[\\]^`{|}~")) {
-        virBufferAdd(buf, str, -1);
+    if (!*str) {
+        virBufferAddLit(buf, "''");
         return;
     }
 
-    if (*str) {
-        len = strlen(str);
-
-        escaped = g_malloc0_n(len + 1, 4);
-    } else {
-        virBufferAddLit(buf, "''");
+    /* Only quote if str includes shell metacharacters. */
+    if (!strpbrk(str, "\r\t\n !\"#$&'()*;<>?[\\]^`{|}~")) {
+        virBufferAdd(buf, str, -1);
         return;
     }
 
+    escaped = g_malloc0_n(strlen(str) + 1, 4);
+
     cur = str;
     out = escaped;
 
-- 
2.34.1




More information about the libvir-list mailing list