On Wed, Nov 06, 2019 at 08:33:09PM +0100, Jan Klemkow wrote:
> Hi Hiltjo,
> 
> On Wed, Nov 06, 2019 at 07:53:02PM +0100, Hiltjo Posthuma wrote:
> > The below patch fixes the #ifndef's for usr.bin/ftp so any combination of 
> > SMALL
> > and NOSSL will compile again.
> 
> Diff looks good for me and works in all ifdef combinations without any
> warning or error.
> 
> OK jan@
> 
> Thanks,
> Jan
> 
> > diff --git usr.bin/ftp/fetch.c usr.bin/ftp/fetch.c
> > index 4c7e14b04bd..15927471f1a 100644
> > --- usr.bin/ftp/fetch.c
> > +++ usr.bin/ftp/fetch.c
> > @@ -201,14 +201,14 @@ url_get(const char *origline, const char *proxyenv, 
> > const char *outfile, int las
> >     char *proxyhost = NULL;
> >  #ifndef NOSSL
> >     char *sslpath = NULL, *sslhost = NULL;
> > -   char *full_host = NULL;
> > -   const char *scheme;
> >     int ishttpurl = 0, ishttpsurl = 0;
> >  #endif /* !NOSSL */
> >  #ifndef SMALL
> > +   char *full_host = NULL;
> > +   const char *scheme;
> >     char *locbase;
> >     struct addrinfo *ares = NULL;
> > -#endif
> > +#endif /* !SMALL */
> >     struct tls *tls = NULL;
> >     int status;
> >     int save_errno;
> > @@ -221,8 +221,10 @@ url_get(const char *origline, const char *proxyenv, 
> > const char *outfile, int las
> >             errx(1, "Can't allocate memory to parse URL");
> >     if (strncasecmp(newline, HTTP_URL, sizeof(HTTP_URL) - 1) == 0) {
> >             host = newline + sizeof(HTTP_URL) - 1;
> > -#ifndef SMALL
> > +#ifndef NOSSL
> >             ishttpurl = 1;
> > +#endif /* !NOSSL */
> > +#ifndef SMALL
> >             scheme = HTTP_URL;
> >  #endif /* !SMALL */
> >     } else if (strncasecmp(newline, FTP_URL, sizeof(FTP_URL) - 1) == 0) {
> > @@ -234,13 +236,17 @@ url_get(const char *origline, const char *proxyenv, 
> > const char *outfile, int las
> >     } else if (strncasecmp(newline, FILE_URL, sizeof(FILE_URL) - 1) == 0) {
> >             host = newline + sizeof(FILE_URL) - 1;
> >             isfileurl = 1;
> > -#ifndef NOSSL
> > +#ifndef SMALL
> >             scheme = FILE_URL;
> > +#endif /* !SMALL */
> > +#ifndef NOSSL
> >     } else if (strncasecmp(newline, HTTPS_URL, sizeof(HTTPS_URL) - 1) == 0) 
> > {
> >             host = newline + sizeof(HTTPS_URL) - 1;
> >             ishttpsurl = 1;
> > -           scheme = HTTPS_URL;
> >  #endif /* !NOSSL */
> > +#ifndef SMALL
> > +           scheme = HTTPS_URL;
> > +#endif /* !SMALL */
> >     } else
> >             errx(1, "url_get: Invalid URL '%s'", newline);
> >  
> > @@ -1066,8 +1072,10 @@ improper:
> >     warnx("Improper response from %s", host);
> >  
> >  cleanup_url_get:
> > -#ifndef NOSSL
> > +#ifndef SMALL
> >     free(full_host);
> > +#endif /* !SMALL */
> > +#ifndef NOSSL
> >     free(sslhost);
> >  #endif /* !NOSSL */
> >     ftp_close(&fin, &tls, &fd);
> 

Thanks for reviewing the patch. Sadly I noticed and made a stupid mistake. When
NOSSL is set, but SMALL is not set.  It will set scheme = HTTPS_URL for the
file handler.

Below is the full updated patch:


diff --git usr.bin/ftp/fetch.c usr.bin/ftp/fetch.c
index 4c7e14b04bd..4511fb29fa1 100644
--- usr.bin/ftp/fetch.c
+++ usr.bin/ftp/fetch.c
@@ -201,14 +201,14 @@ url_get(const char *origline, const char *proxyenv, const 
char *outfile, int las
        char *proxyhost = NULL;
 #ifndef NOSSL
        char *sslpath = NULL, *sslhost = NULL;
-       char *full_host = NULL;
-       const char *scheme;
        int ishttpurl = 0, ishttpsurl = 0;
 #endif /* !NOSSL */
 #ifndef SMALL
+       char *full_host = NULL;
+       const char *scheme;
        char *locbase;
        struct addrinfo *ares = NULL;
-#endif
+#endif /* !SMALL */
        struct tls *tls = NULL;
        int status;
        int save_errno;
@@ -221,8 +221,10 @@ url_get(const char *origline, const char *proxyenv, const 
char *outfile, int las
                errx(1, "Can't allocate memory to parse URL");
        if (strncasecmp(newline, HTTP_URL, sizeof(HTTP_URL) - 1) == 0) {
                host = newline + sizeof(HTTP_URL) - 1;
-#ifndef SMALL
+#ifndef NOSSL
                ishttpurl = 1;
+#endif /* !NOSSL */
+#ifndef SMALL
                scheme = HTTP_URL;
 #endif /* !SMALL */
        } else if (strncasecmp(newline, FTP_URL, sizeof(FTP_URL) - 1) == 0) {
@@ -234,12 +236,16 @@ url_get(const char *origline, const char *proxyenv, const 
char *outfile, int las
        } else if (strncasecmp(newline, FILE_URL, sizeof(FILE_URL) - 1) == 0) {
                host = newline + sizeof(FILE_URL) - 1;
                isfileurl = 1;
-#ifndef NOSSL
+#ifndef SMALL
                scheme = FILE_URL;
+#endif /* !SMALL */
+#ifndef NOSSL
        } else if (strncasecmp(newline, HTTPS_URL, sizeof(HTTPS_URL) - 1) == 0) 
{
                host = newline + sizeof(HTTPS_URL) - 1;
                ishttpsurl = 1;
+#ifndef SMALL
                scheme = HTTPS_URL;
+#endif /* !SMALL */
 #endif /* !NOSSL */
        } else
                errx(1, "url_get: Invalid URL '%s'", newline);
@@ -1066,8 +1072,10 @@ improper:
        warnx("Improper response from %s", host);
 
 cleanup_url_get:
-#ifndef NOSSL
+#ifndef SMALL
        free(full_host);
+#endif /* !SMALL */
+#ifndef NOSSL
        free(sslhost);
 #endif /* !NOSSL */
        ftp_close(&fin, &tls, &fd);

-- 
Kind regards,
Hiltjo

Reply via email to