]> xenbits.xensource.com Git - libvirt.git/commitdiff
virBufferTrim: do not accept len
authorJán Tomko <jtomko@redhat.com>
Sun, 2 Feb 2020 19:26:38 +0000 (20:26 +0100)
committerJán Tomko <jtomko@redhat.com>
Mon, 3 Feb 2020 18:44:38 +0000 (19:44 +0100)
Always trim the full specified suffix.

All of the callers outside of tests were passing either
strlen or the actual length of the string.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
15 files changed:
src/conf/domain_addr.c
src/conf/domain_conf.c
src/cpu/cpu_x86.c
src/qemu/qemu_command.c
src/rpc/virnetsshsession.c
src/storage/storage_util.c
src/util/virbuffer.c
src/util/virbuffer.h
src/util/virqemu.c
src/util/virresctrl.c
tests/qemublocktest.c
tests/qemumonitorjsontest.c
tests/virbuftest.c
tools/virsh-domain.c
tools/vsh.c

index bde078418940ec9af1439b4807e82c5e82a47fe6..c0e468122a4d7a84d7aad0147bab17850bc4faac 100644 (file)
@@ -1946,7 +1946,7 @@ virDomainUSBAddressPortFormatBuf(virBufferPtr buf,
             break;
         virBufferAsprintf(buf, "%u.", port[i]);
     }
-    virBufferTrim(buf, ".", -1);
+    virBufferTrim(buf, ".");
 }
 
 
index 9b60db7ecdaae27c08089488febbf8fc8595b40d..c95bd34fb510d45fe7655c24cde998e85efbd05f 100644 (file)
@@ -25521,7 +25521,7 @@ virDomainVirtioNetGuestOptsFormat(char **outstr,
         virBufferAsprintf(&buf, "ufo='%s' ",
                           virTristateSwitchTypeToString(def->driver.virtio.guest.ufo));
     }
-    virBufferTrim(&buf, " ", -1);
+    virBufferTrim(&buf, " ");
 
     *outstr = virBufferContentAndReset(&buf);
     return 0;
@@ -25561,7 +25561,7 @@ virDomainVirtioNetHostOptsFormat(char **outstr,
         virBufferAsprintf(&buf, "mrg_rxbuf='%s' ",
                           virTristateSwitchTypeToString(def->driver.virtio.host.mrg_rxbuf));
     }
-    virBufferTrim(&buf, " ", -1);
+    virBufferTrim(&buf, " ");
 
     *outstr = virBufferContentAndReset(&buf);
     return 0;
@@ -30580,7 +30580,7 @@ virDomainGetBlkioParametersAssignFromDef(virDomainDefPtr def,
                               def->blkio.devices[i].path, \
                               def->blkio.devices[i].param); \
         } \
-        virBufferTrim(&buf, ",", -1); \
+        virBufferTrim(&buf, ","); \
         data = virBufferContentAndReset(&buf); \
         if (virTypedParameterAssign(&(params[(*nparams)++]), name, \
                                     VIR_TYPED_PARAM_STRING, data) < 0) \
index 9b7981d574b29a38fdd8aeb028ce54bd2e4b4d0d..dca9ed2979c04cdaa5431783378e71d579dc1e96 100644 (file)
@@ -1981,7 +1981,7 @@ x86FormatSignatures(virCPUx86ModelPtr model)
                           (unsigned long)model->signatures[i]);
     }
 
-    virBufferTrim(&buf, ",", -1);
+    virBufferTrim(&buf, ",");
 
     return virBufferContentAndReset(&buf);
 }
@@ -3059,8 +3059,8 @@ virCPUx86UpdateLive(virCPUDefPtr cpu,
         }
     }
 
-    virBufferTrim(&bufAdded, ",", -1);
-    virBufferTrim(&bufRemoved, ",", -1);
+    virBufferTrim(&bufAdded, ",");
+    virBufferTrim(&bufRemoved, ",");
 
     added = virBufferContentAndReset(&bufAdded);
     removed = virBufferContentAndReset(&bufRemoved);
index c8195cfbb91303745becac9248fb5a9490704bb0..81f5fa34163834f623fd4b58bf78bd1bca348de6 100644 (file)
@@ -2360,7 +2360,7 @@ qemuBuildFloppyCommandLineControllerOptions(virCommandPtr cmd,
 
     if (explicitfdc && hasfloppy) {
         /* Newer Q35 machine types require an explicit FDC controller */
-        virBufferTrim(&fdc_opts, ",", -1);
+        virBufferTrim(&fdc_opts, ",");
         virCommandAddArg(cmd, "-device");
         virCommandAddArgBuffer(cmd, &fdc_opts);
     }
@@ -3979,7 +3979,7 @@ qemuBuildHostNetStr(virDomainNetDefPtr net,
     }
 
 
-    virBufferTrim(&buf, ",", -1);
+    virBufferTrim(&buf, ",");
 
     return virBufferContentAndReset(&buf);
 }
@@ -6330,7 +6330,7 @@ qemuBuildBootCommandLine(virCommandPtr cmd,
     if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOT_STRICT))
         virBufferAddLit(&boot_buf, "strict=on,");
 
-    virBufferTrim(&boot_buf, ",", -1);
+    virBufferTrim(&boot_buf, ",");
 
     boot_opts_str = virBufferContentAndReset(&boot_buf);
     if (boot_opts_str) {
@@ -7744,7 +7744,7 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfigPtr cfg,
      * doesn't support it, it fallbacks to previous migration algorithm silently. */
     virBufferAddLit(&opt, "seamless-migration=on,");
 
-    virBufferTrim(&opt, ",", -1);
+    virBufferTrim(&opt, ",");
 
     virCommandAddArg(cmd, "-spice");
     virCommandAddArgBuffer(cmd, &opt);
index 63773ecfc2e94f9c3f35d00d29da475f6adbeae3..c31d80d4eb0b21bda77e630ac88a81617a937161 100644 (file)
@@ -357,7 +357,7 @@ virNetSSHCheckHostKey(virNetSSHSessionPtr sess)
              * we have to use a *MAGIC* constant. */
             for (i = 0; i < 16; i++)
                 virBufferAsprintf(&buff, "%02hhX:", keyhash[i]);
-            virBufferTrim(&buff, ":", 1);
+            virBufferTrim(&buff, ":");
 
             keyhashstr = virBufferContentAndReset(&buff);
 
index d285e6687940aec3c7ddf4d9d1a4b2cdb92ba839..7688ea9fd9679ba76292e03449c0e6dece18f122 100644 (file)
@@ -755,7 +755,7 @@ storageBackendCreateQemuImgOpts(virStorageEncryptionInfoDefPtr encinfo,
         }
     }
 
-    virBufferTrim(&buf, ",", -1);
+    virBufferTrim(&buf, ",");
 
     *opts = virBufferContentAndReset(&buf);
     return 0;
@@ -4083,7 +4083,7 @@ virStorageBackendFileSystemMountAddOptions(virCommandPtr cmd,
                  "mount_opts from XML", def->name, uuidstr);
     }
 
-    virBufferTrim(&buf, ",", -1);
+    virBufferTrim(&buf, ",");
     mountOpts = virBufferContentAndReset(&buf);
 
     if (mountOpts)
index b76d99b56f7edde025acb95a1a9d74ade32e9f5c..b78c3debe9dbf073e991b5fac1d595a479148f7d 100644 (file)
@@ -637,39 +637,27 @@ virBufferStrcat(virBufferPtr buf, ...)
 /**
  * virBufferTrim:
  * @buf: the buffer to trim
- * @str: the optional string, to force an exact trim
- * @len: the number of bytes to trim, or -1 to use @str
+ * @str: the string to be trimmed from the tail
  *
- * Trim the tail of a buffer.  If @str is provided, the trim only occurs
- * if the current tail of the buffer matches @str; a non-negative @len
- * further limits how much of the tail is trimmed.  If @str is NULL, then
- * @len must be non-negative.
+ * Trim the supplied string from the tail of the buffer.
  */
 void
-virBufferTrim(virBufferPtr buf, const char *str, int len)
+virBufferTrim(virBufferPtr buf, const char *str)
 {
-    size_t len2 = 0;
+    size_t len = 0;
 
     if (!buf || !buf->str)
         return;
 
-    if (!str && len < 0)
+    if (!str)
         return;
 
+    len = strlen(str);
 
-    if (len > 0 && len > buf->str->len)
+    if (len > buf->str->len ||
+        memcmp(&buf->str->str[buf->str->len - len], str, len) != 0)
         return;
 
-    if (str) {
-        len2 = strlen(str);
-        if (len2 > buf->str->len ||
-            memcmp(&buf->str->str[buf->str->len - len2], str, len2) != 0)
-            return;
-    }
-
-    if (len < 0)
-        len = len2;
-
     g_string_truncate(buf->str, buf->str->len - len);
 }
 
index 7b068075b278ac1300ae3e80eafd2594632f9b99..b66b1f2b231712f1dc40e7c55faa25226e129ef9 100644 (file)
@@ -91,7 +91,7 @@ void virBufferSetIndent(virBufferPtr, int indent);
 size_t virBufferGetIndent(const virBuffer *buf);
 size_t virBufferGetEffectiveIndent(const virBuffer *buf);
 
-void virBufferTrim(virBufferPtr buf, const char *trim, int len);
+void virBufferTrim(virBufferPtr buf, const char *trim);
 void virBufferTrimChars(virBufferPtr buf, const char *trim);
 void virBufferTrimLen(virBufferPtr buf, int len);
 void virBufferAddStr(virBufferPtr buf, const char *str);
index 8d0429625d1a078f1ded466440db43627e92ad6a..78a9e0480b69df9f6436fd11e49fd7da85e29b83 100644 (file)
@@ -220,7 +220,7 @@ virQEMUBuildCommandLineJSON(virJSONValuePtr value,
     if (virQEMUBuildCommandLineJSONRecurse(NULL, value, buf, array, false) < 0)
         return -1;
 
-    virBufferTrim(buf, ",", -1);
+    virBufferTrim(buf, ",");
 
     return 0;
 }
index 213d7492d3396bb94b583604e532e5c6bebae039..569a9ee7703323572e40276dc2e2e0d630617c4f 100644 (file)
@@ -1432,7 +1432,7 @@ virResctrlAllocMemoryBandwidthFormat(virResctrlAllocPtr alloc,
         }
     }
 
-    virBufferTrim(buf, ";", 1);
+    virBufferTrim(buf, ";");
     virBufferAddChar(buf, '\n');
     return 0;
 }
@@ -1574,7 +1574,7 @@ virResctrlAllocFormatCache(virResctrlAllocPtr alloc,
                 VIR_FREE(mask_str);
             }
 
-            virBufferTrim(buf, ";", 1);
+            virBufferTrim(buf, ";");
             virBufferAddChar(buf, '\n');
         }
     }
index 3076dc9645df7f0bdbccbf2f439a5506ae796e0f..4cfabf0766c6cb3b355399ac8b8a6dfb7148da27 100644 (file)
@@ -454,7 +454,7 @@ testQemuImageCreate(const void *opaque)
 
     virBufferStrcat(&actualbuf, "protocol:\n", NULLSTR(jsonprotocol),
                     "\nformat:\n", NULLSTR(jsonformat), NULL);
-    virBufferTrim(&actualbuf, "\n", -1);
+    virBufferTrim(&actualbuf, "\n");
     virBufferAddLit(&actualbuf, "\n");
 
     jsonpath = g_strdup_printf("%s%s.json", testQemuImageCreatePath, data->name);
index 0334f83628ac7b63497e2922a751c33cd6db1146..1c7083ca795f371e8ea497093bd945c9e8028864 100644 (file)
@@ -2777,7 +2777,7 @@ testBlockNodeNameDetect(const void *opaque)
 
     virHashForEach(nodedata, testBlockNodeNameDetectFormat, &buf);
 
-    virBufferTrim(&buf, "\n", -1);
+    virBufferTrim(&buf, "\n");
 
     actual = virBufferContentAndReset(&buf);
 
@@ -2919,7 +2919,7 @@ testQueryJobs(const void *opaque)
     for (i = 0; i < njobs; i++)
         testQueryJobsPrintJob(&buf, jobs[i]);
 
-    virBufferTrim(&buf, "\n", -1);
+    virBufferTrim(&buf, "\n");
 
     actual = virBufferContentAndReset(&buf);
 
index f2d4d9b9dea62052a44395ba74ac051ae604aabb..f9d19ff1a1c2998b9f5bd8b5d8bcf64a170327d6 100644 (file)
@@ -102,21 +102,20 @@ static int testBufTrim(const void *data G_GNUC_UNUSED)
     const char *expected = "a,b";
     int ret = -1;
 
-    virBufferTrim(buf, "", 0);
+    virBufferTrim(buf, "");
     buf = &bufinit;
 
     virBufferAddLit(buf, "a;");
-    virBufferTrim(buf, "", 0);
-    virBufferTrim(buf, "", -1);
+    virBufferTrim(buf, "");
+    virBufferTrim(buf, "");
     virBufferTrimLen(buf, 1);
     virBufferTrimLen(buf, 5);
     virBufferTrimLen(buf, 2);
 
     virBufferAddLit(buf, ",b,,");
-    virBufferTrim(buf, NULL, -1);
-    virBufferTrim(buf, "b", -1);
-    virBufferTrim(buf, "b,,", 1);
-    virBufferTrim(buf, ",", -1);
+    virBufferTrim(buf, NULL);
+    virBufferTrim(buf, "b");
+    virBufferTrim(buf, ",,");
 
     result = virBufferContentAndReset(buf);
     if (!result || STRNEQ(result, expected)) {
index 0bb5de540e7298d31a40f9c2d6720ae4a2848c82..32b279269492b765b753d2a20e8702b336b666fb 100644 (file)
@@ -8453,7 +8453,7 @@ cmdDesc(vshControl *ctl, const vshCmd *cmd)
     while ((opt = vshCommandOptArgv(ctl, cmd, opt)))
         virBufferAsprintf(&buf, "%s ", opt->data);
 
-    virBufferTrim(&buf, " ", -1);
+    virBufferTrim(&buf, " ");
 
     desc = virBufferContentAndReset(&buf);
 
@@ -9570,7 +9570,7 @@ cmdQemuMonitorCommand(vshControl *ctl, const vshCmd *cmd)
     while ((opt = vshCommandOptArgv(ctl, cmd, opt)))
         virBufferAsprintf(&buf, "%s ", opt->data);
 
-    virBufferTrim(&buf, " ", -1);
+    virBufferTrim(&buf, " ");
 
     monitor_cmd = virBufferContentAndReset(&buf);
 
@@ -9863,7 +9863,7 @@ cmdQemuAgentCommand(vshControl *ctl, const vshCmd *cmd)
     while ((opt = vshCommandOptArgv(ctl, cmd, opt)))
         virBufferAsprintf(&buf, "%s ", opt->data);
 
-    virBufferTrim(&buf, " ", -1);
+    virBufferTrim(&buf, " ");
 
     guest_agent_cmd = virBufferContentAndReset(&buf);
 
@@ -14077,7 +14077,7 @@ cmdDomFSInfo(vshControl *ctl, const vshCmd *cmd)
 
             for (j = 0; j < info[i]->ndevAlias; j++)
                 virBufferAsprintf(&targetsBuff, "%s,", info[i]->devAlias[j]);
-            virBufferTrim(&targetsBuff, ",", -1);
+            virBufferTrim(&targetsBuff, ",");
 
             targets = virBufferContentAndReset(&targetsBuff);
 
index 3c3b4bf1c33277729f6a336810764caa322d76dd..02a6b6c9552bffa1bddb5eede8f8ee9d470458e9 100644 (file)
@@ -2225,7 +2225,7 @@ vshOutputLogFile(vshControl *ctl, int log_level, const char *msg_format,
     }
     virBufferAsprintf(&buf, "%s ", lvl);
     virBufferVasprintf(&buf, msg_format, ap);
-    virBufferTrim(&buf, "\n", -1);
+    virBufferTrim(&buf, "\n");
     virBufferAddChar(&buf, '\n');
 
     str = virBufferContentAndReset(&buf);
@@ -2517,7 +2517,7 @@ vshTreePrintInternal(vshControl *ctl,
                                  false, indent) < 0)
             return -1;
     }
-    virBufferTrim(indent, "  ", -1);
+    virBufferTrim(indent, "  ");
 
     /* If there was no child device, and we're the last in
      * a list of devices, then print another blank line */