mem-pool: Fix potential memory leak and lost leases when reassigning leases
authorTobias Brunner <tobias@strongswan.org>
Tue, 11 Nov 2014 17:50:26 +0000 (18:50 +0100)
committerTobias Brunner <tobias@strongswan.org>
Tue, 11 Nov 2014 18:00:02 +0000 (19:00 +0100)
commit8ab1b29da4c51bf92df0030f3a17df0ceee1ea06
treefdeb23cfed223ae86b440b64a245ddb6db55f66c
parentfc02a9d4b9e15b35cff67c40c21b10e3ac1044b8
mem-pool: Fix potential memory leak and lost leases when reassigning leases

If no offline leases are available for the current client and assigning online
leases is disabled, and if all IPs of the pool have already been assigned to
clients we look for offline leases that previously were assigned to other
clients.

In case the current client has online leases the previous code would
replace the existing mapping entry and besides resulting in a memory leak
the online leases would be lost forever (even if the client later releases
the addresses).  If this happens repeatedly the number of available addresses
would decrease even though the total number of online and offline leases seen
in `ipsec leases` would indicate that there are free addresses available.

Fixes #764.
src/libhydra/attributes/mem_pool.c