Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Merge pull request #145 from culot/master
Baptiste Daroussin committed 14 years ago
commit c4349f9f95e72e6c91360d9d8974016d6926a8ca
parent 1e917b7
1 file changed +16 -8
modified pkg/update.c
@@ -30,12 +30,17 @@ update_from_remote_repo(const char *name, const char *url)
	struct archive_entry *ae = NULL;
	char repofile[MAXPATHLEN];
	char repofile_unchecked[MAXPATHLEN];
-
	char *tmp = NULL;
+
	char tmp[21];
	const char *dbdir = NULL;
	unsigned char *sig = NULL;
	int siglen = 0;
+
	int rc = EPKG_OK;

-
	tmp   = mktemp(strdup("/tmp/repo.txz.XXXXXX"));
+
	(void)strlcpy(tmp, "/tmp/repo.txz.XXXXXX", sizeof(tmp));
+
	if (mktemp(tmp) == NULL) {
+
		warnx("Could not create temporary file %s, aborting update.\n", tmp);
+
		return (EPKG_FATAL);
+
	}

	if (pkg_config_string(PKG_CONFIG_DBDIR, &dbdir) != EPKG_OK) {
		warnx("Cant get dbdir config entry");
@@ -43,8 +48,10 @@ update_from_remote_repo(const char *name, const char *url)
	}

	if (pkg_fetch_file(url, tmp) != EPKG_OK) {
-
		unlink(tmp);
-
		free(tmp);
+
		/*
+
		 * No need to unlink(tmp) here as it is already
+
		 * done in pkg_fetch_file() in case fetch failed.
+
		 */
		return (EPKG_FATAL);
	}

@@ -73,19 +80,20 @@ update_from_remote_repo(const char *name, const char *url)
			warnx("Invalid signature, removing repository.\n");
			unlink(repofile_unchecked);
			free(sig);
-
			return (EPKG_FATAL);
+
			rc = EPKG_FATAL;
+
			goto cleanup;
		}
	}

	rename(repofile_unchecked, repofile);

+
cleanup:
	if (a != NULL)
		archive_read_finish(a);

-
	unlink(tmp);
-
	free(tmp);
+
	(void)unlink(tmp);

-
	return (EPKG_OK);
+
	return (rc);
}

void