diff --git a/bin/xbps-query/ownedby.c b/bin/xbps-query/ownedby.c index 062a24bf..ec7b904b 100644 --- a/bin/xbps-query/ownedby.c +++ b/bin/xbps-query/ownedby.c @@ -73,7 +73,8 @@ match_files_by_pattern(xbps_dictionary_t pkg_filesd, if (filestr == NULL) continue; if (ffd->regex) { - regcomp(®ex, ffd->pat, REG_EXTENDED|REG_NOSUB); + if (regcomp(®ex, ffd->pat, REG_EXTENDED|REG_NOSUB) != 0) + return; if (regexec(®ex, filestr, 0, 0, 0) == 0) { printf("%s: %s (%s)\n", pkgver, filestr, typestr); } @@ -131,7 +132,8 @@ repo_match_cb(struct xbps_handle *xhp _unused, for (unsigned int i = 0; i < xbps_array_count(obj); i++) { xbps_array_get_cstring_nocopy(obj, i, &filestr); if (ffd->regex) { - regcomp(®ex, ffd->pat, REG_EXTENDED|REG_NOSUB); + if (regcomp(®ex, ffd->pat, REG_EXTENDED|REG_NOSUB) != 0) + return errno; if (regexec(®ex, filestr, 0, 0, 0) == 0) { printf("%s: %s (%s)\n", key, filestr, ffd->repouri); } diff --git a/bin/xbps-query/search.c b/bin/xbps-query/search.c index 1896f2df..ceef468c 100644 --- a/bin/xbps-query/search.c +++ b/bin/xbps-query/search.c @@ -116,7 +116,9 @@ search_array_cb(struct xbps_handle *xhp _unused, vpkgfound = true; if (sd->regex) { - regcomp(®ex, sd->pat, REG_EXTENDED|REG_NOSUB); + if (regcomp(®ex, sd->pat, REG_EXTENDED|REG_NOSUB) != 0) + return errno; + if ((regexec(®ex, pkgver, 0, 0, 0) == 0) || (regexec(®ex, desc, 0, 0, 0) == 0)) { xbps_array_add_cstring_nocopy(sd->results, pkgver); @@ -140,7 +142,8 @@ search_array_cb(struct xbps_handle *xhp _unused, for (unsigned int i = 0; i < xbps_array_count(obj2); i++) { xbps_array_get_cstring_nocopy(obj2, i, &str); if (sd->regex) { - regcomp(®ex, sd->pat, REG_EXTENDED|REG_NOSUB); + if (regcomp(®ex, sd->pat, REG_EXTENDED|REG_NOSUB) != 0) + return errno; if (regexec(®ex, str, 0, 0, 0) == 0) { xbps_dictionary_get_cstring_nocopy(obj, "pkgver", &pkgver); printf("%s: %s (%s)\n", pkgver, str, sd->repourl); @@ -162,7 +165,8 @@ search_array_cb(struct xbps_handle *xhp _unused, /* property is a string */ str = xbps_string_cstring_nocopy(obj2); if (sd->regex) { - regcomp(®ex, sd->pat, REG_EXTENDED|REG_NOSUB); + if (regcomp(®ex, sd->pat, REG_EXTENDED|REG_NOSUB) != 0) + return errno; if (regexec(®ex, str, 0, 0, 0) == 0) { xbps_dictionary_get_cstring_nocopy(obj, "pkgver", &pkgver); printf("%s: %s (%s)\n", pkgver, str, sd->repourl);