Page MenuHomeFreeBSD

D26517.id77338.diff
No OneTemporary

D26517.id77338.diff

Index: usr.sbin/pkg/pkg.c
===================================================================
--- usr.sbin/pkg/pkg.c
+++ usr.sbin/pkg/pkg.c
@@ -830,11 +830,14 @@
static int
bootstrap_pkg(bool force)
{
+ const char *extensions[6] = { ".txz", ".tzst", ".tbz", ".tgz", ".tar",
+ NULL };
int fd_pkg, fd_sig;
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 +863,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 (const char **n = extensions; *n != NULL; n++) {
+ snprintf(packagename, MAXPATHLEN, "pkg%s", *n);
+ 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, Jul 31, 3:44 AM (12 m, 3 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35765145
Default Alt Text
D26517.id77338.diff (4 KB)

Event Timeline