diff options
Diffstat (limited to 'accel-pppd')
-rw-r--r-- | accel-pppd/auth/auth_chap_md5.c | 1 | ||||
-rw-r--r-- | accel-pppd/auth/auth_mschap_v1.c | 1 | ||||
-rw-r--r-- | accel-pppd/auth/auth_mschap_v2.c | 1 | ||||
-rw-r--r-- | accel-pppd/auth/auth_pap.c | 1 | ||||
-rw-r--r-- | accel-pppd/ppp/ppp_auth.c | 8 | ||||
-rw-r--r-- | accel-pppd/ppp/ppp_auth.h | 1 |
6 files changed, 11 insertions, 2 deletions
diff --git a/accel-pppd/auth/auth_chap_md5.c b/accel-pppd/auth/auth_chap_md5.c index de7f741..87d5eda 100644 --- a/accel-pppd/auth/auth_chap_md5.c +++ b/accel-pppd/auth/auth_chap_md5.c @@ -100,6 +100,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp) memset(d, 0, sizeof(*d)); d->auth.proto = PPP_CHAP; + d->auth.len = 1; d->ppp = ppp; return &d->auth; diff --git a/accel-pppd/auth/auth_mschap_v1.c b/accel-pppd/auth/auth_mschap_v1.c index 23b0f0e..d00e1a7 100644 --- a/accel-pppd/auth/auth_mschap_v1.c +++ b/accel-pppd/auth/auth_mschap_v1.c @@ -101,6 +101,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp) memset(d, 0, sizeof(*d)); d->auth.proto = PPP_CHAP; + d->auth.len = 1; d->ppp = ppp; return &d->auth; diff --git a/accel-pppd/auth/auth_mschap_v2.c b/accel-pppd/auth/auth_mschap_v2.c index 66e17f2..1c8e444 100644 --- a/accel-pppd/auth/auth_mschap_v2.c +++ b/accel-pppd/auth/auth_mschap_v2.c @@ -105,6 +105,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp) memset(d, 0, sizeof(*d)); d->auth.proto = PPP_CHAP; + d->auth.len = 1; d->ppp = ppp; return &d->auth; diff --git a/accel-pppd/auth/auth_pap.c b/accel-pppd/auth/auth_pap.c index a2303d1..7becc47 100644 --- a/accel-pppd/auth/auth_pap.c +++ b/accel-pppd/auth/auth_pap.c @@ -73,6 +73,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp) memset(d, 0, sizeof(*d)); d->auth.proto = PPP_PAP; + d->auth.len = 0; d->ppp = ppp; return &d->auth; diff --git a/accel-pppd/ppp/ppp_auth.c b/accel-pppd/ppp/ppp_auth.c index 33d0021..ab5200a 100644 --- a/accel-pppd/ppp/ppp_auth.c +++ b/accel-pppd/ppp/ppp_auth.c @@ -15,7 +15,6 @@ #include "memdebug.h" static LIST_HEAD(auth_handlers); -static int extra_opt_len = 0; static int conf_noauth = 0; static struct lcp_option_t *auth_init(struct ppp_lcp_t *lcp); @@ -75,11 +74,12 @@ static struct lcp_option_t *auth_init(struct ppp_lcp_t *lcp) struct ppp_auth_handler_t *h; struct auth_data_t *d; struct auth_layer_data_t *ad; + int auth_data_len = 0; ad = container_of(ppp_find_layer_data(lcp->ppp, &auth_layer), typeof(*ad), ld); ad->auth_opt.opt.id = CI_AUTH; - ad->auth_opt.opt.len = 4 + extra_opt_len; + ad->auth_opt.opt.len = 4; INIT_LIST_HEAD(&ad->auth_opt.auth_list); @@ -90,8 +90,12 @@ static struct lcp_option_t *auth_init(struct ppp_lcp_t *lcp) d = h->init(lcp->ppp); d->h = h; list_add_tail(&d->entry, &ad->auth_opt.auth_list); + if (auth_data_len < d->len) + auth_data_len = d->len; } + ad->auth_opt.opt.len += auth_data_len; + return &ad->auth_opt.opt; } diff --git a/accel-pppd/ppp/ppp_auth.h b/accel-pppd/ppp/ppp_auth.h index e9398c2..97dfa29 100644 --- a/accel-pppd/ppp/ppp_auth.h +++ b/accel-pppd/ppp/ppp_auth.h @@ -13,6 +13,7 @@ struct auth_data_t struct list_head entry; int proto; int state; + int len; struct ppp_auth_handler_t *h; }; |