summaryrefslogtreecommitdiff
path: root/accel-pppd/session_backup.c
diff options
context:
space:
mode:
authorDenys Fedoryshchenko <denys.f@collabora.com>2026-09-07 20:54:47 +0300
committerGitHub <noreply@github.com>2026-09-07 20:54:47 +0300
commit7e81fd4a4c5fb47f9ddfc6d99124ade83ca58940 (patch)
treeee978a149543f91c8a155a6f6dcbee26564f7bf5 /accel-pppd/session_backup.c
parent57ae56148c5519b9207ede623098d3cfad5211b8 (diff)
parent4654c4a9c083780f5e151ee064e69a357c48d364 (diff)
downloadaccel-ppp-7e81fd4a4c5fb47f9ddfc6d99124ade83ca58940.tar.gz
accel-ppp-7e81fd4a4c5fb47f9ddfc6d99124ade83ca58940.zip
Merge pull request #361 from nuclearcat/fix-protocol-buffer-access
Fix several unsafe or unaligned integer accesses found in protocol parsing paths, including option-gated MPPE, DHCP, PPPoE, RADIUS, IPCP and IPv6CP code.
Diffstat (limited to 'accel-pppd/session_backup.c')
-rw-r--r--accel-pppd/session_backup.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/accel-pppd/session_backup.c b/accel-pppd/session_backup.c
index dea5b600..2873136f 100644
--- a/accel-pppd/session_backup.c
+++ b/accel-pppd/session_backup.c
@@ -59,6 +59,8 @@ static int session_save(struct ap_session *ses, struct backup_mod *m)
static int session_restore(struct ap_session *ses, struct backup_mod *m)
{
struct backup_tag *t;
+ time_t start_time;
+ uint32_t ifindex;
list_for_each_entry(t, &m->tag_list, entry) {
switch(t->id) {
@@ -79,11 +81,14 @@ static int session_restore(struct ap_session *ses, struct backup_mod *m)
ses->ifname[t->size] = 0;
break;
case SES_TAG_START_TIME:
- ses->start_time = *(time_t *)t->data;
+ memcpy(&start_time, t->data, sizeof(start_time));
+ ses->start_time = start_time;
break;
case SES_TAG_IFINDEX:
- if (ses->backup->internal)
- ses->ifindex = *(uint32_t *)t->data;
+ if (ses->backup->internal) {
+ memcpy(&ifindex, t->data, sizeof(ifindex));
+ ses->ifindex = ifindex;
+ }
break;
/*case PPP_TAG_FD:
ses->fd = *(int *)t->data;