Skip to content

Commit c5405fc

Browse files
author
Sebastiano Merlino
committed
Avoid memory leak due to user, pass and digested_user initialization
1 parent 492f2f2 commit c5405fc

File tree

2 files changed

+13
-16
lines changed

2 files changed

+13
-16
lines changed

src/httpserver/webserver.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ class webserver
308308

309309
void end_request_construction(MHD_Connection* connection,
310310
struct details::modded_request* mr, const char* version,
311-
const char* method, char* user, char* pass, char* digested_user
311+
const char* method, char** user, char** pass, char** digested_user
312312
);
313313

314314
int finalize_answer(MHD_Connection* connection,

src/webserver.cpp

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -718,9 +718,9 @@ void webserver::end_request_construction(
718718
struct details::modded_request* mr,
719719
const char* version,
720720
const char* method,
721-
char* user,
722-
char* pass,
723-
char* digested_user
721+
char** user,
722+
char** pass,
723+
char** digested_user
724724
)
725725
{
726726
mr->ws = this;
@@ -752,12 +752,9 @@ void webserver::end_request_construction(
752752
mr->dhr->set_path(mr->standardized_url->c_str());
753753
mr->dhr->set_method(method);
754754

755-
if(basic_auth_enabled)
756-
{
757-
user = MHD_basic_auth_get_username_password(connection, &pass);
758-
}
759-
if(digest_auth_enabled)
760-
digested_user = MHD_digest_auth_get_username(connection);
755+
if(basic_auth_enabled) *user = MHD_basic_auth_get_username_password(connection, pass);
756+
if(digest_auth_enabled) *digested_user = MHD_digest_auth_get_username(connection);
757+
761758
mr->dhr->set_version(version);
762759
const MHD_ConnectionInfo * conninfo = MHD_get_connection_info(
763760
connection,
@@ -769,12 +766,12 @@ void webserver::end_request_construction(
769766
mr->dhr->set_requestor_port(get_port(conninfo->client_addr));
770767
if(pass != 0x0)
771768
{
772-
mr->dhr->set_pass(pass);
773-
mr->dhr->set_user(user);
769+
mr->dhr->set_pass(*pass);
770+
mr->dhr->set_user(*user);
774771
}
775772
if(digested_user != 0x0)
776773
{
777-
mr->dhr->set_digested_user(digested_user);
774+
mr->dhr->set_digested_user(*digested_user);
778775
}
779776
}
780777

@@ -953,9 +950,9 @@ int webserver::complete_request(
953950
mr,
954951
version,
955952
method,
956-
pass,
957-
user,
958-
digested_user
953+
&pass,
954+
&user,
955+
&digested_user
959956
);
960957

961958
int to_ret = finalize_answer(connection, mr, method);

0 commit comments

Comments
 (0)