summaryrefslogtreecommitdiff
path: root/accel-pppd
diff options
context:
space:
mode:
authorDmitriyEshenko <snooppy@mail.ua>2021-06-30 22:29:23 +0300
committerVladislav Grishenko <themiron@users.noreply.github.com>2021-07-01 00:47:41 +0500
commitaa9e2eefe4ad51ba6a61ba10abe7dc1ef277700d (patch)
tree9ba358af5ae73e883c0f4842d3b9e62b68bbfc10 /accel-pppd
parent7bb6c06e884b1c29f2fbb74918167fc6567ccf93 (diff)
downloadaccel-ppp-xebd-aa9e2eefe4ad51ba6a61ba10abe7dc1ef277700d.tar.gz
accel-ppp-xebd-aa9e2eefe4ad51ba6a61ba10abe7dc1ef277700d.zip
T43: Change to list_for_each_safe to prevent segmentation fault
Diffstat (limited to 'accel-pppd')
-rw-r--r--accel-pppd/logs/log_file.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/accel-pppd/logs/log_file.c b/accel-pppd/logs/log_file.c
index 216ff5a..42d9f3f 100644
--- a/accel-pppd/logs/log_file.c
+++ b/accel-pppd/logs/log_file.c
@@ -265,8 +265,10 @@ static void general_log(struct log_target_t *t, struct log_msg_t *msg, struct ap
static struct ap_private *find_pd(struct ap_session *ses, void *pd_key)
{
struct ap_private *pd;
+ struct list_head *pos, *next;
- list_for_each_entry(pd, &ses->pd_list, entry) {
+ list_for_each_safe(pos, next, &ses->pd_list) {
+ pd = list_entry(pos->next, typeof(*pd), entry);
if (pd->key == pd_key) {
return pd;
}
@@ -551,8 +553,8 @@ static void ev_ctrl_started(struct ap_session *ses)
}
memset(fpd, 0, sizeof(*fpd));
fpd->pd.key = &pd_key3;
- list_add_tail(&fpd->pd.entry, &ses->pd_list);
INIT_LIST_HEAD(&fpd->msgs);
+ list_add_tail(&fpd->pd.entry, &ses->pd_list);
}
}