Fix memory leaks on radius_client_send error paths
In case this function returns an error, the RADIUS message needs to freed in the caller. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
8c6f80e023
commit
ca8e039fec
4 changed files with 16 additions and 9 deletions
|
@ -88,7 +88,8 @@ static void start_example(void *eloop_ctx, void *timeout_ctx)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
radius_client_send(ctx->radius, msg, RADIUS_AUTH, NULL);
|
if (radius_client_send(ctx->radius, msg, RADIUS_AUTH, NULL) < 0)
|
||||||
|
radius_msg_free(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -259,8 +259,9 @@ void accounting_sta_start(struct hostapd_data *hapd, struct sta_info *sta)
|
||||||
hapd, sta);
|
hapd, sta);
|
||||||
|
|
||||||
msg = accounting_msg(hapd, sta, RADIUS_ACCT_STATUS_TYPE_START);
|
msg = accounting_msg(hapd, sta, RADIUS_ACCT_STATUS_TYPE_START);
|
||||||
if (msg)
|
if (msg &&
|
||||||
radius_client_send(hapd->radius, msg, RADIUS_ACCT, sta->addr);
|
radius_client_send(hapd->radius, msg, RADIUS_ACCT, sta->addr) < 0)
|
||||||
|
radius_msg_free(msg);
|
||||||
|
|
||||||
sta->acct_session_started = 1;
|
sta->acct_session_started = 1;
|
||||||
}
|
}
|
||||||
|
@ -358,9 +359,10 @@ static void accounting_sta_report(struct hostapd_data *hapd,
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
radius_client_send(hapd->radius, msg,
|
if (radius_client_send(hapd->radius, msg,
|
||||||
stop ? RADIUS_ACCT : RADIUS_ACCT_INTERIM,
|
stop ? RADIUS_ACCT : RADIUS_ACCT_INTERIM,
|
||||||
sta->addr);
|
sta->addr) < 0)
|
||||||
|
goto fail;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
@ -463,7 +465,8 @@ static void accounting_report_state(struct hostapd_data *hapd, int on)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
radius_client_send(hapd->radius, msg, RADIUS_ACCT, NULL);
|
if (radius_client_send(hapd->radius, msg, RADIUS_ACCT, NULL) < 0)
|
||||||
|
radius_msg_free(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,8 @@ static int hostapd_radius_acl_query(struct hostapd_data *hapd, const u8 *addr,
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
radius_client_send(hapd->radius, msg, RADIUS_AUTH, addr);
|
if (radius_client_send(hapd->radius, msg, RADIUS_AUTH, addr) < 0)
|
||||||
|
goto fail;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
|
@ -278,7 +278,9 @@ static void ieee802_1x_encapsulate_radius(struct eapol_test_data *e,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
radius_client_send(e->radius, msg, RADIUS_AUTH, e->wpa_s->own_addr);
|
if (radius_client_send(e->radius, msg, RADIUS_AUTH, e->wpa_s->own_addr)
|
||||||
|
< 0)
|
||||||
|
goto fail;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|
Loading…
Reference in a new issue