[http] Send authentication information whenever username is present
authorMichael Brown <mcb30@etherboot.org>
Tue, 17 Feb 2009 11:56:27 +0000 (11:56 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 17 Feb 2009 11:56:27 +0000 (11:56 +0000)
Send authentication information if the username is present, even if
the password is empty.

src/net/tcp/http.c

index 0191750..93ccfd3 100644 (file)
@@ -391,10 +391,10 @@ static void http_step ( struct process *process ) {
        const char *host = http->uri->host;
        const char *query = http->uri->query;
        const char *user = http->uri->user;
-       const char *password = http->uri->password;
-       size_t user_pw_len = ( ( user && password ) ?
-                              ( strlen ( user ) + 1 /* ":" */ +
-                                strlen ( password ) ) : 0 );
+       const char *password =
+               ( http->uri->password ? http->uri->password : "" );
+       size_t user_pw_len = ( user ? ( strlen ( user ) + 1 /* ":" */ +
+                                       strlen ( password ) ) : 0 );
        size_t user_pw_base64_len = base64_encoded_len ( user_pw_len );
        char user_pw[ user_pw_len + 1 /* NUL */ ];
        char user_pw_base64[ user_pw_base64_len + 1 /* NUL */ ];
@@ -406,7 +406,7 @@ static void http_step ( struct process *process ) {
                process_del ( &http->process );
 
                /* Construct authorisation, if applicable */
-               if ( user_pw_len ) {
+               if ( user ) {
                        char *buf = user_pw;
                        ssize_t remaining = sizeof ( user_pw );
                        size_t len;
@@ -435,11 +435,10 @@ static void http_step ( struct process *process ) {
                                          ( path ? path : "/" ),
                                          ( query ? "?" : "" ),
                                          ( query ? query : "" ),
-                                         ( user_pw_len ?
+                                         ( user ?
                                            "Authorization: Basic " : "" ),
-                                         ( user_pw_len ?
-                                           user_pw_base64 : "" ),
-                                         ( user_pw_len ? "\r\n" : "" ),
+                                         ( user ? user_pw_base64 : "" ),
+                                         ( user ? "\r\n" : "" ),
                                          host ) ) != 0 ) {
                        http_done ( http, rc );
                }