aklog: Free client/server princs in get_credv5 61/13761/6
authorYadavendra Yadav <yadayada@in.ibm.com>
Fri, 9 Aug 2019 21:24:38 +0000 (02:24 +0530)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 30 Aug 2019 16:11:36 +0000 (12:11 -0400)
commitab8b28540ef17d67db02d5dbcb7585443c164e45
tree1b4fa27ea11dbd5b1b450a02a20c187f2fb3b557
parent2336164d1bf63980419d3a870f908f1f384fdfc0
aklog: Free client/server princs in get_credv5

Inside get_credv5, client_principal is static so the first time
get_credv5 runs we'll allocate memory for it, and on subsequent calls
we'll reuse the same value.

However, if we call get_credv5_akimpersonate, we'll free
client_principal and never change what client_principal points to. If we
need to call get_credv5 again (because we need to retry getting creds),
we'll reuse the old value for client_principal, but since it points to
free memory we'll segfault or cause other problems.

To avoid this, change get_credv5 so we allocate the client and server
principals on each invocation of get_credv5 and free them before
returning from get_credv5. Since we free the client and server
principals inside get_credv5, remove freeing the client and server
principals inside get_credv5_akimpersonate.

Change-Id: Ie263aa2c03efc75e818d9007347dca9e42380dd4
Reviewed-on: https://gerrit.openafs.org/13761
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
src/aklog/aklog.c