[libvirt] [PATCH 1/3] virBufferEscapeShell: Emit quotes for the empty string

Guido Günther agx at sigxcpu.org
Tue Oct 18 19:35:14 UTC 2011


Make the empty string return '' to match cmdEcho's behavior.
---
 src/util/buf.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/util/buf.c b/src/util/buf.c
index f582cd2..b7fcf6d 100644
--- a/src/util/buf.c
+++ b/src/util/buf.c
@@ -507,15 +507,20 @@ virBufferEscapeShell(virBufferPtr buf, const char *str)
         return;
 
     /* Only quote if str includes shell metacharacters. */
-    if (!strpbrk(str, "\r\t\n !\"#$&'()*;<>?[\\]^`{|}~")) {
+    if (*str && !strpbrk(str, "\r\t\n !\"#$&'()*;<>?[\\]^`{|}~")) {
         virBufferAdd(buf, str, -1);
         return;
     }
 
-    len = strlen(str);
-    if (xalloc_oversized(4, len) ||
-        VIR_ALLOC_N(escaped, 4 * len + 3) < 0) {
-        virBufferSetError(buf);
+    if (*str) {
+        len = strlen(str);
+        if (xalloc_oversized(4, len) ||
+            VIR_ALLOC_N(escaped, 4 * len + 3) < 0) {
+            virBufferSetError(buf);
+            return;
+        }
+    } else {
+        virBufferAdd(buf, "''", 2);
         return;
     }
 
-- 
1.7.6.3




More information about the libvir-list mailing list