diff options
| author | Denys Fedoryshchenko <denys.f@collabora.com> | 2026-09-28 21:50:27 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-28 21:50:27 +0300 |
| commit | 50c54c477624d5a9b668225fde2b9844d362760a (patch) | |
| tree | d1fe53a3c637f8b963027aa483053ae7afb55b5e /accel-pppd/ctrl | |
| parent | c9d938173838d6955c824d141f24672d7037eb4e (diff) | |
| parent | 06aa0ef737d6993fd18e7db1bc8fc35601079505 (diff) | |
| download | accel-ppp-master.tar.gz accel-ppp-master.zip | |
Additional safeguards
Diffstat (limited to 'accel-pppd/ctrl')
| -rw-r--r-- | accel-pppd/ctrl/pppoe/pppoe.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/accel-pppd/ctrl/pppoe/pppoe.c b/accel-pppd/ctrl/pppoe/pppoe.c index bd92cbf8..6161cc03 100644 --- a/accel-pppd/ctrl/pppoe/pppoe.c +++ b/accel-pppd/ctrl/pppoe/pppoe.c @@ -1156,6 +1156,7 @@ static void pppoe_recv_PADR(struct pppoe_serv_t *serv, uint8_t *pack, int size) struct pppoe_tag *service_name_tag = NULL; struct pppoe_tag *tr101_tag = NULL; int n, service_match = 0; + int service_name_count = 0; struct pppoe_conn_t *conn; int vendor_id; uint16_t ppp_max_payload = 0; @@ -1204,6 +1205,7 @@ static void pppoe_recv_PADR(struct pppoe_serv_t *serv, uint8_t *pack, int size) goto padr_tags_done; case TAG_SERVICE_NAME: service_name_tag = tag; + service_name_count++; if (tag->tag_len == 0) service_match = 1; else if (conf_service_name[0]) { @@ -1251,9 +1253,9 @@ padr_tags_done: return; } - if (!service_name_tag) { + if (service_name_count != 1) { if (conf_verbose) - log_warn("pppoe: discard PADR packet (no Service-Name tag present)\n"); + log_warn("pppoe: discard PADR packet (expected exactly one Service-Name tag)\n"); return; } |
