1 byte leak ?
Alan DeKok
aland at deployingradius.com
Sat Dec 8 23:25:41 CET 2007
blue_11j at yahoo.co.jp wrote:
> I found memory leak(?) of 1 byte when PEAP authentication, by valgrind.
Can you provide a test case, hopefully with wpa_supplicant as the client?
> I tried fllowing patch for rlm_eap.
> it look like work well.
> is it corret way?
I'm not sure. The "type.data" field *is* malloc'd. It is NOT free'd
in eap_packet_free(). However, it *is* free'd in eap_wireformat().
The only time I can see there being a memory leak is when the EAP
packet is allocated, *but* it is never encoded into the wire-format.
If you go to the rlm_eap directory, you can do:
$ grep -r alloc . | grep type.data | grep c:
That will give you around 10 locations where type.data = malloc(...).
If this is really a memory leak, then *all* of those locations will
likely have to be fixed.
The following change inside of eap_packet_free() *should* catch all
corner cases.
Alan DeKok.
if (eap_packet->type.data) {
/*
* There IS a packet, AND the data portion points
* to the EAP data: do nothing. Otherwise, free it.
*/
if (!(eap_packet->packet &&
(eap_packet->type.data == (eap_packet->packet + 5)))) {
free(eap_packet->type.data);
}
eap_packet->type.data = NULL;
}
More information about the Freeradius-Users
mailing list