bin/xbps-rindex/index-add.c: use-after-free (CID 62764)
This commit is contained in:
parent
23fccb17f7
commit
3b0917c24a
@ -46,7 +46,7 @@ index_add(struct xbps_handle *xhp, int argc, char **argv, bool force)
|
|||||||
struct xbps_repo *repo = NULL;
|
struct xbps_repo *repo = NULL;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
const char *arch;
|
const char *arch;
|
||||||
char *sha256, *pkgver, *opkgver, *oarch, *pkgname;
|
char *sha256, *pkgver, *pkgname;
|
||||||
char *tmprepodir = NULL, *repodir = NULL;
|
char *tmprepodir = NULL, *repodir = NULL;
|
||||||
int rv = 0, ret = 0;
|
int rv = 0, ret = 0;
|
||||||
bool flush = false, found = false;
|
bool flush = false, found = false;
|
||||||
@ -114,6 +114,8 @@ index_add(struct xbps_handle *xhp, int argc, char **argv, bool force)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
} else if (!force) {
|
} else if (!force) {
|
||||||
|
char *opkgver = NULL, *oarch = NULL;
|
||||||
|
|
||||||
/* Only check version if !force */
|
/* Only check version if !force */
|
||||||
xbps_dictionary_get_cstring(curpkgd, "pkgver", &opkgver);
|
xbps_dictionary_get_cstring(curpkgd, "pkgver", &opkgver);
|
||||||
xbps_dictionary_get_cstring(curpkgd, "architecture", &oarch);
|
xbps_dictionary_get_cstring(curpkgd, "architecture", &oarch);
|
||||||
@ -123,14 +125,13 @@ index_add(struct xbps_handle *xhp, int argc, char **argv, bool force)
|
|||||||
* If the considered package reverts the package in the index,
|
* If the considered package reverts the package in the index,
|
||||||
* consider the current package as the newer one.
|
* consider the current package as the newer one.
|
||||||
*/
|
*/
|
||||||
if(ret < 0 && xbps_pkg_reverts(binpkgd, opkgver)) {
|
if (ret < 0 && xbps_pkg_reverts(binpkgd, opkgver)) {
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
* If package in the index reverts considered package, consider the
|
* If package in the index reverts considered package, consider the
|
||||||
* package in the index as the newer one.
|
* package in the index as the newer one.
|
||||||
*/
|
*/
|
||||||
else if (ret > 0 && xbps_pkg_reverts(curpkgd, pkgver)) {
|
} else if (ret > 0 && xbps_pkg_reverts(curpkgd, pkgver)) {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,9 +149,9 @@ index_add(struct xbps_handle *xhp, int argc, char **argv, bool force)
|
|||||||
* Current package version is greater than
|
* Current package version is greater than
|
||||||
* index version.
|
* index version.
|
||||||
*/
|
*/
|
||||||
|
printf("index: removed obsolete entry `%s' (%s).\n", opkgver, oarch);
|
||||||
xbps_dictionary_remove(idx, pkgname);
|
xbps_dictionary_remove(idx, pkgname);
|
||||||
xbps_dictionary_remove(idxfiles, opkgver);
|
xbps_dictionary_remove(idxfiles, opkgver);
|
||||||
printf("index: removed obsolete entry `%s' (%s).\n", opkgver, oarch);
|
|
||||||
free(opkgver);
|
free(opkgver);
|
||||||
free(oarch);
|
free(oarch);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user