From a93754ca66630221d10d1307b9cd165bed63d68e Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 30 May 2018 09:40:33 +0000 Subject: [PATCH] properly fix wget https support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See: https://git.alpinelinux.org/cgit/aports/commit/?id=1d0560a9b6b5597b191e5aff69a31c2fe0aba273 --- networking/wget.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/networking/wget.c b/networking/wget.c index 9ec0e67b9..66959058c 100644 --- a/networking/wget.c +++ b/networking/wget.c @@ -57,7 +57,6 @@ //config: bool "Support HTTPS using internal TLS code" //config: default y //config: depends on WGET -//config: select TLS //config: help //config: wget will use internal TLS code to connect to https:// URLs. //config: It also enables FTPS support, but it's not well tested yet. @@ -772,10 +771,8 @@ static void spawn_ssl_client(const char *host, int network_fd, int flags) int pid; char *servername, *p; - if (!(option_mask32 & WGET_OPT_NO_CHECK_CERT)) { - option_mask32 |= WGET_OPT_NO_CHECK_CERT; - bb_simple_error_msg("note: TLS certificate validation not implemented"); - } + if (ENABLE_SSL_CLIENT && !(option_mask32 & WGET_OPT_NO_CHECK_CERT)) + bb_simple_error_msg_and_die("note: TLS certificate validation not implemented"); servername = xstrdup(host); p = strrchr(servername, ':'); @@ -792,14 +789,14 @@ static void spawn_ssl_client(const char *host, int network_fd, int flags) close(sp[0]); xmove_fd(sp[1], 0); xdup2(0, 1); - if (BB_MMU) { + if (BB_MMU && ENABLE_TLS && (option_mask32 & WGET_OPT_NO_CHECK_CERT)) { tls_state_t *tls = new_tls_state(); tls->ifd = tls->ofd = network_fd; tls_handshake(tls, servername); tls_run_copy_loop(tls, flags); exit(0); } else { - char *argv[6]; + char *argv[7], **a; xmove_fd(network_fd, 3); argv[0] = (char*)"ssl_client"; @@ -807,8 +804,14 @@ static void spawn_ssl_client(const char *host, int network_fd, int flags) //TODO: if (!is_ip_address(servername))... argv[2] = (char*)"-n"; argv[3] = servername; - argv[4] = (flags & TLSLOOP_EXIT_ON_LOCAL_EOF ? (char*)"-e" : NULL); - argv[5] = NULL; + + a = &argv[4]; + if (flags & TLSLOOP_EXIT_ON_LOCAL_EOF) + *a++ = (char*)"-e"; + if (!ENABLE_SSL_CLIENT && (option_mask32 & WGET_OPT_NO_CHECK_CERT)) + *a++= (char*)"-I"; + *a = NULL; + BB_EXECVP(argv[0], argv); bb_perror_msg_and_die("can't execute '%s'", argv[0]); }