$OpenBSD: patch-protocols_msn_passport_c,v 1.3 2004/10/21 14:48:51 naddy Exp $ --- protocols/msn/passport.c.orig Wed Jul 7 23:38:16 2004 +++ protocols/msn/passport.c Thu Oct 14 15:43:34 2004 @@ -59,23 +59,30 @@ int passport_get_id( gpointer data, char static char *passport_create_header( char *reply, char *email, char *pwd ) { - char *buffer = g_new0( char, 2048 ); + size_t buffer_len = 2048; + char *buffer = g_new0( char, buffer_len); char *currenttoken; char *email_enc, *pwd_enc; - email_enc = g_new0( char, strlen( email ) * 3 + 1 ); - strcpy( email_enc, email ); - http_encode( email_enc ); + { + size_t len = strlen( email ) * 3 + 1; + email_enc = g_new0( char, len ); + strlcpy( email_enc, email, len ); + http_encode( email_enc, len); + } - pwd_enc = g_new0( char, strlen( pwd ) * 3 + 1 ); - strcpy( pwd_enc, pwd ); - http_encode( pwd_enc ); + { + size_t len = strlen( pwd ) * 3 + 1; + pwd_enc = g_new0( char, len ); + strlcpy( pwd_enc, pwd, len ); + http_encode( pwd_enc, len ); + } currenttoken = strstr( reply, "lc=" ); if( currenttoken == NULL ) return( NULL ); - g_snprintf( buffer, 2048, + g_snprintf( buffer, buffer_len, "Authorization: Passport1.4 OrgVerb=GET," "OrgURL=http%%3A%%2F%%2Fmessenger%%2Emsn%%2Ecom," "sign-in=%s,pwd=%s,%s", email_enc, pwd_enc, @@ -179,7 +186,7 @@ static int passport_get_id_from( gpointe rep->func = func; rep->redirects = 4; - strncpy( server, url, 512 ); + strlcpy( server, url, sizeof(server)); dummy = strchr( server, '/' ); if( dummy ) *dummy = 0; @@ -220,14 +227,14 @@ static void passport_get_id_connected( g return; } - memset( buffer, 0, PPG_BUFFERSIZE + 1 ); + memset( buffer, 0, sizeof(buffer)); - strncpy( server, rep->url, 512 ); + strlcpy( server, rep->url, sizeof(server)); dummy = strchr( server, '/' ); if( dummy == NULL ) goto end; - g_snprintf( buffer, PPG_BUFFERSIZE - 1, "GET %s HTTP/1.0\r\n" + g_snprintf( buffer, sizeof(buffer), "GET %s HTTP/1.0\r\n" "%s\r\n\r\n", dummy, rep->header ); ssl_write( ssl, buffer, strlen( buffer ) ); @@ -265,7 +272,7 @@ static void passport_get_id_connected( g g_free( rep->url ); rep->url = g_strdup( dummy ); - strncpy( server, dummy, sizeof( server ) - 1 ); + strlcpy( server, dummy, sizeof( server )); dummy = strchr( server, '/' ); if( dummy ) *dummy = 0;