From 66a97b863ce450bb0932ea4813b81c9b62d84b83 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Tue, 14 Aug 2018 11:34:30 +0100 Subject: Atari: Move to new HTTP auth API. --- frontends/atari/gui.c | 39 +++++++++++++++++++++++---------------- frontends/atari/login.c | 18 ++++++++++++------ frontends/atari/login.h | 2 +- 3 files changed, 36 insertions(+), 23 deletions(-) (limited to 'frontends/atari') diff --git a/frontends/atari/gui.c b/frontends/atari/gui.c index 6ee63b301..14e02e5f8 100644 --- a/frontends/atari/gui.c +++ b/frontends/atari/gui.c @@ -767,23 +767,30 @@ static void gui_set_clipboard(const char *buffer, size_t length, } static void gui_401login_open(nsurl *url, const char *realm, - nserror (*cb)(bool proceed, void *pw), void *cbpw) + const char *username, const char *password, + nserror (*cb)(const char *username, + const char *password, + void *pw), + void *cbpw) { - bool bres; - char * out = NULL; - bres = login_form_do( url, (char*)realm, &out); - if (bres) { - NSLOG(netsurf, INFO, "url: %s, realm: %s, auth: %s\n", - nsurl_access(url), realm, out); - urldb_set_auth_details(url, realm, out); - } - if (out != NULL) { - free( out ); - } - if (cb != NULL) { - cb(bres, cbpw); - } - + bool bres; + char * u_out = NULL; + char * p_out = NULL; + + bres = login_form_do(url, (char*)realm, &u_out, &p_out); + if (bres) { + NSLOG(netsurf, INFO, "url: %s, realm: %s, auth: %s\n", + nsurl_access(url), realm, out); + } + if (cb != NULL) { + cb(u_out, p_out, cbpw); + } + if (u_out != NULL) { + free(u_out); + } + if (p_out != NULL) { + free(p_out); + } } static nserror diff --git a/frontends/atari/login.c b/frontends/atari/login.c index 1b21c5d2a..6736c3ab2 100644 --- a/frontends/atari/login.c +++ b/frontends/atari/login.c @@ -34,7 +34,7 @@ #include "atari/res/netsurf.rsh" -bool login_form_do(nsurl * url, char * realm, char ** out) +bool login_form_do(nsurl * url, char * realm, char ** u_out char ** p_out) { char user[255]; char pass[255]; @@ -45,8 +45,6 @@ bool login_form_do(nsurl * url, char * realm, char ** out) user[0] = 0; pass[0] = 0; - // TODO: use auth details for predefined login data - // auth = urldb_get_auth_details(url, realm); tree = gemtk_obj_get_tree(LOGIN); assert(tree != NULL); @@ -57,10 +55,18 @@ bool login_form_do(nsurl * url, char * realm, char ** out) get_string(tree, LOGIN_TB_USER, user); get_string(tree, LOGIN_TB_PASSWORD, pass); int size = strlen((char*)&user) + strlen((char*)&pass) + 2 ; - *out = malloc(size); - snprintf(*out, size, "%s:%s", user, pass); + *u_out = malloc(strlen((char*)&user) + 1); + *p_out = malloc(strlen((char*)&pass) + 1); + if (u_out == NULL || p_out == NULL) { + free(*u_out); + free(*p_out); + return false; + } + memcpy(*u_out, (char*)&user, strlen((char*)&user) + 1); + memcpy(*p_out, (char*)&pass, strlen((char*)&pass) + 1); } else { - *out = NULL; + *u_out = NULL; + *p_out = NULL; } return((exit_obj == LOGIN_BT_LOGIN)); } diff --git a/frontends/atari/login.h b/frontends/atari/login.h index b61808c71..3b714dd9d 100644 --- a/frontends/atari/login.h +++ b/frontends/atari/login.h @@ -21,6 +21,6 @@ #include "utils/nsurl.h" -bool login_form_do( nsurl * host, char * realm, char **cbpw ); +bool login_form_do(nsurl * url, char * realm, char ** u_out char ** p_out); #endif -- cgit v1.2.3