summaryrefslogtreecommitdiff
path: root/accel-pppd/ppp
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2016-03-04 22:08:17 +0300
committerDmitry Kozlov <xeb@mail.ru>2016-03-04 22:08:17 +0300
commit3fa9e6ad35c7768ccba7381599119656b18e5eb9 (patch)
treea8df3d0448c5f1197c7ae77ec7865b43ae43ea83 /accel-pppd/ppp
parent5b44e480d387916fe19f93caa45faac954444f9c (diff)
downloadaccel-ppp-xebd-3fa9e6ad35c7768ccba7381599119656b18e5eb9.tar.gz
accel-ppp-xebd-3fa9e6ad35c7768ccba7381599119656b18e5eb9.zip
ppp_auth: fixed possible use after free
Diffstat (limited to 'accel-pppd/ppp')
-rw-r--r--accel-pppd/ppp/ppp_auth.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/accel-pppd/ppp/ppp_auth.c b/accel-pppd/ppp/ppp_auth.c
index aa663bf..7927288 100644
--- a/accel-pppd/ppp/ppp_auth.c
+++ b/accel-pppd/ppp/ppp_auth.c
@@ -343,10 +343,8 @@ int __export ppp_auth_succeeded(struct ppp_t *ppp, char *username)
{
struct auth_layer_data_t *ad = container_of(ppp_find_layer_data(ppp, &auth_layer), typeof(*ad), ld);
- if (ap_session_set_username(&ppp->ses, username)) {
- _free(username);
+ if (ap_session_set_username(&ppp->ses, username))
return -1;
- }
if (connect_ppp_channel(ppp))
return -1;
@@ -361,7 +359,9 @@ void __export ppp_auth_failed(struct ppp_t *ppp, char *username)
if (username) {
pthread_rwlock_wrlock(&ses_lock);
if (!ppp->ses.username)
- ppp->ses.username = _strdup(username);
+ ppp->ses.username = username;
+ else
+ _free(username);
ppp->ses.terminate_cause = TERM_AUTH_ERROR;
pthread_rwlock_unlock(&ses_lock);
log_ppp_info1("%s: authentication failed\n", username);