libpkgconf: pkg: determine_prefix: use caller-provided buffer for reentrancy

feature/tap-sh
William Pitcock 2017-09-08 20:04:49 -05:00
parent adae70445a
commit 2681c29edd
1 changed files with 5 additions and 5 deletions

View File

@ -189,13 +189,12 @@ pkgconf_pkg_parser_keyword_set(const pkgconf_client_t *client, pkgconf_pkg_t *pk
} }
static const char * static const char *
determine_prefix(const pkgconf_pkg_t *pkg) determine_prefix(const pkgconf_pkg_t *pkg, char *buf, size_t buflen)
{ {
static char buf[PKGCONF_BUFSIZE];
char *pathiter; char *pathiter;
pkgconf_strlcpy(buf, pkg->filename, sizeof buf); pkgconf_strlcpy(buf, pkg->filename, buflen);
pkgconf_path_relocate(buf, sizeof buf); pkgconf_path_relocate(buf, buflen);
pathiter = strrchr(buf, PKG_DIR_SEP_S); pathiter = strrchr(buf, PKG_DIR_SEP_S);
if (pathiter == NULL) if (pathiter == NULL)
@ -276,6 +275,7 @@ pkgconf_pkg_new_from_file(pkgconf_client_t *client, const char *filename, FILE *
pkgconf_pkg_t *pkg; pkgconf_pkg_t *pkg;
char readbuf[PKGCONF_BUFSIZE]; char readbuf[PKGCONF_BUFSIZE];
char pathbuf[PKGCONF_BUFSIZE]; char pathbuf[PKGCONF_BUFSIZE];
char prefixbuf[PKGCONF_BUFSIZE];
char *idptr; char *idptr;
size_t lineno = 0; size_t lineno = 0;
@ -361,7 +361,7 @@ pkgconf_pkg_new_from_file(pkgconf_client_t *client, const char *filename, FILE *
pkgconf_tuple_add(client, &pkg->vars, key, value, true); pkgconf_tuple_add(client, &pkg->vars, key, value, true);
else else
{ {
const char *relvalue = determine_prefix(pkg); const char *relvalue = determine_prefix(pkg, prefixbuf, sizeof prefixbuf);
if (relvalue != NULL) if (relvalue != NULL)
{ {
pkgconf_tuple_add(client, &pkg->vars, "orig_prefix", value, true); pkgconf_tuple_add(client, &pkg->vars, "orig_prefix", value, true);