Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
dirname(3) can modify content.
Vsevolod Stakhov committed 11 years ago
commit f4836bbf8526527657c866bd1222b2161c135bfb
parent 0212548
1 file changed +5 -1
modified libpkg/repo/binary/fetch.c
@@ -97,6 +97,7 @@ pkg_repo_binary_try_fetch(struct pkg_repo *repo, struct pkg *pkg,
	char dest[MAXPATHLEN], link_dest[MAXPATHLEN],
	     link_dest_tmp[MAXPATHLEN];
	char url[MAXPATHLEN];
+
	char *dir = NULL;
	int sym_fd, fetched = 0;
	char cksum[SHA256_DIGEST_LENGTH * 2 +1];
	int64_t pkgsize;
@@ -133,7 +134,10 @@ pkg_repo_binary_try_fetch(struct pkg_repo *repo, struct pkg *pkg,
		goto checksum;

	/* Create the dirs in cachedir */
-
	if ((path = strdup(dirname(dest))) == NULL) {
+
	dir = strdup(dest);
+
	if (dir == NULL || (path = dirname(dir)) == NULL) {
+
		/* allowed even if dir is NULL */
+
		free(dir);
		pkg_emit_errno("dirname", dest);
		retcode = EPKG_FATAL;
		goto cleanup;