Page MenuHomeFreeBSD

D26517.diff
No OneTemporary

D26517.diff

Index: usr.sbin/pkg/pkg.c
===================================================================
--- usr.sbin/pkg/pkg.c
+++ usr.sbin/pkg/pkg.c
@@ -85,6 +85,9 @@
STAILQ_HEAD(fingerprint_list, fingerprint);
+static const char *extensions[6] = { ".txz", ".tzst", ".tbz", ".tgz", ".tar",
+ ".bsd" };
+
static int
extract_pkg_static(int fd, char *p, int sz)
{
@@ -831,10 +834,12 @@
bootstrap_pkg(bool force)
{
int fd_pkg, fd_sig;
+ unsigned int i;
int ret;
char url[MAXPATHLEN];
char tmppkg[MAXPATHLEN];
char tmpsig[MAXPATHLEN];
+ char packagename[MAXPATHLEN];
const char *packagesite;
const char *signature_type;
char pkgstatic[MAXPATHLEN];
@@ -860,58 +865,74 @@
if (strncmp(URL_SCHEME_PREFIX, packagesite,
strlen(URL_SCHEME_PREFIX)) == 0)
packagesite += strlen(URL_SCHEME_PREFIX);
- snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz", packagesite);
- snprintf(tmppkg, MAXPATHLEN, "%s/pkg.txz.XXXXXX",
- getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
+ for (i = 0; i < nitems(extensions); i++) {
+ snprintf(packagename, MAXPATHLEN, "pkg%s", extensions[i]);
+ snprintf(
+ url, MAXPATHLEN, "%s/Latest/%s", packagesite, packagename);
- if ((fd_pkg = fetch_to_fd(url, tmppkg)) == -1)
- goto fetchfail;
+ snprintf(tmppkg, MAXPATHLEN, "%s/%s.XXXXXX",
+ getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP,
+ packagename);
- if (signature_type != NULL &&
- strcasecmp(signature_type, "NONE") != 0) {
- if (strcasecmp(signature_type, "FINGERPRINTS") == 0) {
+ if ((fd_pkg = fetch_to_fd(url, tmppkg)) == -1)
+ continue;
- snprintf(tmpsig, MAXPATHLEN, "%s/pkg.txz.sig.XXXXXX",
- getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
- snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.sig",
- packagesite);
+ if (signature_type != NULL &&
+ strcasecmp(signature_type, "NONE") != 0) {
+ if (strcasecmp(signature_type, "FINGERPRINTS") == 0) {
+
+ snprintf(tmpsig, MAXPATHLEN, "%s/%s.sig.XXXXXX",
+ getenv("TMPDIR") ? getenv("TMPDIR") :
+ _PATH_TMP,
+ packagename);
+ snprintf(url, MAXPATHLEN, "%s/Latest/%s.sig",
+ packagesite, packagename);
+
+ if ((fd_sig = fetch_to_fd(url, tmpsig)) == -1) {
+ fprintf(stderr,
+ "Signature for pkg not "
+ "available.\n");
+ goto fetchfail;
+ }
- if ((fd_sig = fetch_to_fd(url, tmpsig)) == -1) {
- fprintf(stderr, "Signature for pkg not "
- "available.\n");
- goto fetchfail;
- }
+ if (verify_signature(fd_pkg, fd_sig) == false)
+ goto cleanup;
+ } else if (strcasecmp(signature_type, "PUBKEY") == 0) {
+
+ snprintf(tmpsig, MAXPATHLEN,
+ "%s/%s.pubkeysig.XXXXXX",
+ getenv("TMPDIR") ? getenv("TMPDIR") :
+ _PATH_TMP,
+ packagename);
+ snprintf(url, MAXPATHLEN,
+ "%s/Latest/%s.pubkeysig", packagesite,
+ packagename);
+
+ if ((fd_sig = fetch_to_fd(url, tmpsig)) == -1) {
+ fprintf(stderr,
+ "Signature for pkg not "
+ "available.\n");
+ goto fetchfail;
+ }
- if (verify_signature(fd_pkg, fd_sig) == false)
+ if (verify_pubsignature(fd_pkg, fd_sig) ==
+ false)
+ goto cleanup;
+ } else {
+ warnx("Signature type %s is not supported for "
+ "bootstrapping.",
+ signature_type);
goto cleanup;
- } else if (strcasecmp(signature_type, "PUBKEY") == 0) {
-
- snprintf(tmpsig, MAXPATHLEN,
- "%s/pkg.txz.pubkeysig.XXXXXX",
- getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP);
- snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.pubkeysig",
- packagesite);
-
- if ((fd_sig = fetch_to_fd(url, tmpsig)) == -1) {
- fprintf(stderr, "Signature for pkg not "
- "available.\n");
- goto fetchfail;
}
-
- if (verify_pubsignature(fd_pkg, fd_sig) == false)
- goto cleanup;
- } else {
- warnx("Signature type %s is not supported for "
- "bootstrapping.", signature_type);
- goto cleanup;
}
- }
- if ((ret = extract_pkg_static(fd_pkg, pkgstatic, MAXPATHLEN)) == 0)
- ret = install_pkg_static(pkgstatic, tmppkg, force);
+ if ((ret = extract_pkg_static(fd_pkg, pkgstatic, MAXPATHLEN)) ==
+ 0)
+ ret = install_pkg_static(pkgstatic, tmppkg, force);
- goto cleanup;
+ goto cleanup;
+ }
fetchfail:
warnx("Error fetching %s: %s", url, fetchLastErrString);

File Metadata

Mime Type
text/plain
Expires
Fri, Dec 26, 6:16 AM (16 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27277048
Default Alt Text
D26517.diff (4 KB)

Event Timeline