libadmin: Let xdr allocate rpc output strings 26/14626/4
authorMichael Meffie <mmeffie@sinenomine.net>
Fri, 21 May 2021 16:38:01 +0000 (12:38 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 25 Jun 2021 02:02:43 +0000 (22:02 -0400)
commit0d6b9defb36cb94f3d34b058f00055e9e99d85fc
tree028c27be48372f18be1161ea4ffe231f1ce37a0a
parenta49788237a85c43752fc788c8d6533905ec7a100
libadmin: Let xdr allocate rpc output strings

In most functions, the libadmin library provides fixed sized buffers for
RPC output strings instead of letting xdr allocate the output string.
Unfortunately the fixed sized buffers do not account for the terminating
nul char when the output string is the maximum length possible for the
xdr output strings.

To avoid potential buffer overflows, and to allow for larger xdr string
sizes in the future, convert these to xdr allocated strings and use safe
string functions to copy the results to the application buffers. Fail
with an error if the application buffer is too small, instead of
overflowing the buffer or truncating results.

Thanks to Cheyenne Wills for pointing out this issue.

Change-Id: I963e1b790417863c036e897811c86a634d1d4e7f
Reviewed-on: https://gerrit.openafs.org/14626
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/libadmin/adminutil/afs_AdminUtilErrors.et
src/libadmin/adminutil/afs_utilAdmin.c
src/libadmin/bos/afs_bosAdmin.c