[libvirt] [PATCH 2/5] util: use VIR_STRCAT instead of strcat
Pavel Hrdina
phrdina at redhat.com
Thu Feb 23 16:22:43 UTC 2017
On Thu, Feb 23, 2017 at 05:15:37PM +0100, Martin Kletzander wrote:
> On Thu, Feb 23, 2017 at 04:26:57PM +0100, Pavel Hrdina wrote:
> >Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> >---
> > cfg.mk | 14 ++++++++------
> > src/storage/storage_backend_logical.c | 6 +++---
> > src/test/test_driver.c | 2 +-
> > src/util/vircgroup.c | 4 +---
> > src/xen/xend_internal.c | 2 +-
> > 5 files changed, 14 insertions(+), 14 deletions(-)
> >
> >diff --git a/cfg.mk b/cfg.mk
> >index 22c655eac6..6646509206 100644
> >--- a/cfg.mk
> >+++ b/cfg.mk
> >@@ -390,6 +390,11 @@ sc_prohibit_strdup:
> > halt='use VIR_STRDUP, not strdup' \
> > $(_sc_search_regexp)
> >
> >+sc_prohibit_strcat:
> >+ @prohibit='\<strn?cat\> *\(' \
> >+ halt='use VIR_STRCAT, not strcat' \
> >+ $(_sc_search_regexp)
> >+
> > # Prefer virSetUIDGID.
> > sc_prohibit_setuid:
> > @prohibit='\<set(re)?[ug]id\> *\(' \
> >@@ -994,12 +999,6 @@ sc_prohibit_not_streq:
> > halt='Use STRNEQ instead of !STREQ and STREQ instead of !STRNEQ' \
> > $(_sc_search_regexp)
> >
> >-sc_prohibit_verbose_strcat:
> >- @prohibit='strncat\([^,]*,\s+([^,]*),\s+strlen\(\1\)\)' \
> >- in_vc_files='\.[ch]$$' \
> >- halt='Use strcat(a, b) instead of strncat(a, b, strlen(b))' \
> >- $(_sc_search_regexp)
> >-
> > # Ensure that each .c file containing a "main" function also
> > # calls virGettextInitialize
> > sc_gettext_init:
> >@@ -1134,6 +1133,9 @@ exclude_file_name_regexp--sc_prohibit_asprintf = \
> > exclude_file_name_regexp--sc_prohibit_strdup = \
> > ^(docs/|examples/|src/util/virstring\.c|tests/vir(netserverclient|cgroup)mock.c$$)
> >
> >+exclude_file_name_regexp--sc_prohibit_strcat = \
> >+ ^(docs/|src/util/virstring\.c|tests/virstringtest\.c)$$
>
> why virstringtest.c?
I'll remove it, nice catch.
> >+
> > exclude_file_name_regexp--sc_prohibit_close = \
> > (\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir.+mock\.c)$$)
> >
> >diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c
> >index 756c62e908..5e006a980a 100644
> >--- a/src/storage/storage_backend_logical.c
> >+++ b/src/storage/storage_backend_logical.c
> >@@ -201,11 +201,11 @@ virStorageBackendLogicalParseVolExtents(virStorageVolDefPtr vol,
> > /* Allocate space for 'nextents' regex_unit strings plus a comma for each */
> > if (VIR_ALLOC_N(regex, nextents * (strlen(regex_unit) + 1) + 1) < 0)
> > goto cleanup;
> >- strcat(regex, regex_unit);
> >+ VIR_STRCAT_INPLACE(regex, regex_unit);
> > for (i = 1; i < nextents; i++) {
> > /* "," is the separator of "devices" field */
> >- strcat(regex, ",");
> >- strcat(regex, regex_unit);
> >+ VIR_STRCAT_INPLACE(regex, ",");
> >+ VIR_STRCAT_INPLACE(regex, regex_unit);
> > }
> >
> > if (VIR_ALLOC(reg) < 0)
> >diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> >index 5fef3f10b9..be887ec1bb 100644
> >--- a/src/test/test_driver.c
> >+++ b/src/test/test_driver.c
> >@@ -699,7 +699,7 @@ static char *testBuildFilename(const char *relativeTo,
> > VIR_FREE(absFile);
> > return NULL;
> > }
> >- strcat(absFile, filename);
> >+ ignore_value(VIR_STRCAT_INPLACE(absFile, filename));
> > return absFile;
> > } else {
> > ignore_value(VIR_STRDUP(ret, filename));
> >diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
> >index 5aa1db5b14..e8210ca6eb 100644
> >--- a/src/util/vircgroup.c
> >+++ b/src/util/vircgroup.c
> >@@ -1299,10 +1299,8 @@ virCgroupSetPartitionSuffix(const char *path, char **res)
> > */
> > if (STRNEQ(tokens[i], "") &&
> > !strchr(tokens[i], '.')) {
> >- if (VIR_REALLOC_N(tokens[i],
> >- strlen(tokens[i]) + strlen(".partition") + 1) < 0)
> >+ if (VIR_STRCAT(tokens[i], ".partition") < 0)
> > goto cleanup;
> >- strcat(tokens[i], ".partition");
>
> Not counting the rest of your patches, just for now, is this the only
> place the VIR_STRCAT adds value? This makes me even more cautious about
> the patches.
Yes, the VIR_STRCAT was introduced solely for the following patch and since
there was code using strcat I though that it would be nice to switch to
VIR_STRCAT.
It definitely doesn't hurt if we have this helper and who knows, someone may
use it some day :).
Pavel
> > }
> >
> > if (virCgroupPartitionEscape(&(tokens[i])) < 0)
> >diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
> >index 605c3cdccf..1f9d4c6959 100644
> >--- a/src/xen/xend_internal.c
> >+++ b/src/xen/xend_internal.c
> >@@ -1824,7 +1824,7 @@ xenDaemonDomainPinVcpu(virConnectPtr conn,
> > for (i = 0; i < maplen; i++) for (j = 0; j < 8; j++)
> > if (cpumap[i] & (1 << j)) {
> > snprintf(buf, sizeof(buf), "%zu,", (8 * i) + j);
> >- strcat(mapstr, buf);
> >+ VIR_STRCAT_INPLACE(mapstr, buf);
> > }
> > mapstr[strlen(mapstr) - 1] = 0;
> >
> >--
> >2.11.1
> >
> >--
> >libvir-list mailing list
> >libvir-list at redhat.com
> >https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170223/1f930c19/attachment-0001.sig>
More information about the libvir-list
mailing list