Mercurial > mplayer.hg
changeset 18094:16f2bcd5d148
free memory on error in http_add_basic_authentication
author | reimar |
---|---|
date | Fri, 14 Apr 2006 13:37:38 +0000 |
parents | 937c496ed2e8 |
children | 5327871ea0e5 |
files | libmpdemux/http.c |
diffstat | 1 files changed, 9 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/http.c Fri Apr 14 13:27:55 2006 +0000 +++ b/libmpdemux/http.c Fri Apr 14 13:37:38 2006 +0000 @@ -585,8 +585,9 @@ int http_add_basic_authentication( HTTP_header_t *http_hdr, const char *username, const char *password ) { - char *auth, *usr_pass, *b64_usr_pass; + char *auth = NULL, *usr_pass = NULL, *b64_usr_pass = NULL; int encoded_len, pass_len=0, out_len; + int res = -1; if( http_hdr==NULL || username==NULL ) return -1; if( password!=NULL ) { @@ -596,7 +597,7 @@ usr_pass = (char*)malloc(strlen(username)+pass_len+2); if( usr_pass==NULL ) { mp_msg(MSGT_NETWORK,MSGL_FATAL,"Memory allocation failed\n"); - return -1; + goto out; } sprintf( usr_pass, "%s:%s", username, (password==NULL)?"":password ); @@ -606,13 +607,13 @@ b64_usr_pass = (char*)malloc(encoded_len); if( b64_usr_pass==NULL ) { mp_msg(MSGT_NETWORK,MSGL_FATAL,"Memory allocation failed\n"); - return -1; + goto out; } out_len = base64_encode( usr_pass, strlen(usr_pass), b64_usr_pass, encoded_len); if( out_len<0 ) { mp_msg(MSGT_NETWORK,MSGL_FATAL,"Base64 out overflow\n"); - return -1; + goto out; } b64_usr_pass[out_len]='\0'; @@ -620,17 +621,19 @@ auth = (char*)malloc(encoded_len+22); if( auth==NULL ) { mp_msg(MSGT_NETWORK,MSGL_FATAL,"Memory allocation failed\n"); - return -1; + goto out; } sprintf( auth, "Authorization: Basic %s", b64_usr_pass); http_set_field( http_hdr, auth ); + res = 0; +out: free( usr_pass ); free( b64_usr_pass ); free( auth ); - return 0; + return res; } void