summaryrefslogtreecommitdiff
path: root/accel-pppd/auth
diff options
context:
space:
mode:
authorKozlov Dmitry <xeb@mail.ru>2012-12-07 18:03:47 +0400
committerKozlov Dmitry <xeb@mail.ru>2012-12-07 18:03:47 +0400
commite738e9dcb801d9fc5f9ba1356ab9e1caa5e55441 (patch)
tree9528d3b0e60d1774c7db4096c0e290571c7e7a4e /accel-pppd/auth
parent1289fd4fca1b6900295da524d078a594869d84e6 (diff)
downloadaccel-ppp-xebd-e738e9dcb801d9fc5f9ba1356ab9e1caa5e55441.tar.gz
accel-ppp-xebd-e738e9dcb801d9fc5f9ba1356ab9e1caa5e55441.zip
auth_pap: make messages like other auth modules
Diffstat (limited to 'accel-pppd/auth')
-rw-r--r--accel-pppd/auth/auth_pap.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/accel-pppd/auth/auth_pap.c b/accel-pppd/auth/auth_pap.c
index 95341bb..ee64ee8 100644
--- a/accel-pppd/auth/auth_pap.c
+++ b/accel-pppd/auth/auth_pap.c
@@ -215,22 +215,22 @@ static int pap_recv_req(struct pap_auth_data_t *p, struct pap_hdr_t *hdr)
r = pwdb_check(p->ppp, peer_id, PPP_PAP, passwd);
if (r == PWDB_NO_IMPL) {
passwd2 = pwdb_get_passwd(p->ppp, peer_id);
- if (!passwd2 || strcmp(passwd2, passwd))
+ if (!passwd2) {
+ if (conf_ppp_verbose)
+ log_ppp_warn("pap: user not found\n");
+ goto failed;
+ }
+
+ if (strcmp(passwd2, passwd))
r = PWDB_DENIED;
else
r = PWDB_SUCCESS;
+
_free(passwd2);
}
+
if (r == PWDB_DENIED) {
- if (conf_ppp_verbose)
- log_ppp_warn("PAP: authentication error\n");
- pap_send_nak(p, hdr->id);
- if (p->started)
- ppp_terminate(p->ppp, TERM_AUTH_ERROR, 0);
- else
- ppp_auth_failed(p->ppp, peer_id);
- ret = -1;
- _free(peer_id);
+ goto failed;
} else {
if (ppp_auth_succeeded(p->ppp, peer_id)) {
pap_send_nak(p, hdr->id);
@@ -246,7 +246,19 @@ static int pap_recv_req(struct pap_auth_data_t *p, struct pap_hdr_t *hdr)
_free(passwd);
- return ret;
+ return 0;
+
+failed:
+ pap_send_nak(p, hdr->id);
+ if (p->started)
+ ppp_terminate(p->ppp, TERM_AUTH_ERROR, 0);
+ else
+ ppp_auth_failed(p->ppp, peer_id);
+
+ _free(passwd);
+ _free(peer_id);
+
+ return -1;
}
static void pap_recv(struct ppp_handler_t *h)