sideband: Fix use after free bug.
authorAndre Noll <maan@systemlinux.org>
Fri, 29 Jun 2012 14:28:11 +0000 (16:28 +0200)
committerAndre Noll <maan@systemlinux.org>
Fri, 29 Jun 2012 14:28:11 +0000 (16:28 +0200)
commit454228f5f7b65b398c8cbaef094cf71f5dbac434
tree615722dc7e247a9e6769899165d98673d893f10f
parent01a7db579a518a1a03b940a5a42411e49123ac1b
sideband: Fix use after free bug.

Commit 32ffc06c (Pass command exit status via sideband to client.)
made para_server's command handler send the exit status of the command
to the client as an RC4-encrypted sideband packet.

However, the encryption key has already been freed when this packet
is sent. This may result in client errors about invalid or unexpected
sideband designators, but these errors occurred rather infrequently,
which makes this bug hard to trigger. Presumably the freed memory is
usually not being reused since the command handler is going to dye
anyway after the packet is sent.

This patch fixes the bug by deferring to free the crypto keys until
the exit code has been sent.
command.c