Historically we matched log filters with strstr(), and when switching to fnmatch in cbb0fd3cfdc287f6f4653ef1f04a7cfb2ea51b27, it was stated that we would continue to match substrings, with "foo" being equivalent to "*foo*". Unfortuntely I forget to provide the code to actually make that happen. This fixes it to prepend and append "*" if not already present in the user's pattern. Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> --- src/util/virlog.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/util/virlog.c b/src/util/virlog.c index be9fc0cf78..d548010b10 100644 --- a/src/util/virlog.c +++ b/src/util/virlog.c @@ -1409,6 +1409,8 @@ virLogFilterNew(const char *match, { virLogFilterPtr ret = NULL; char *mdup = NULL; + size_t mlen = strlen(match); + size_t off = 0; virCheckFlags(VIR_LOG_STACK_TRACE, NULL); @@ -1418,9 +1420,19 @@ virLogFilterNew(const char *match, return NULL; } - if (VIR_STRDUP_QUIET(mdup, match) < 0) + if (VIR_ALLOC_N_QUIET(mdup, mlen + 3) < 0) return NULL; + if (match[0] != '*') { + mdup[off++] = '*'; + } + memcpy(mdup + off, match, mlen + 1); + off += mlen; + if (match[mlen - 1] != '*') { + mdup[off++] = '*'; + mdup[off++] = '\0'; + } + if (VIR_ALLOC_QUIET(ret) < 0) { VIR_FREE(mdup); return NULL; -- 2.17.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list