rxdebug: NUL-terminate version before printing

Currently, 'rxdebug -version' never initializes the buffer we read the
version string into. Usually this is not noticeable, since all OpenAFS
binaries tend to pad the Rx version response packet with NULs, so we
get back several NULs to terminate the string. However, this is not
guaranteed, and if we do not get back a NUL-terminated string, we can
easily read beyond the end of the buffer.

To avoid this, initialize the 'version' buffer with NULs before we do
anything, and set the last byte to NUL, in case we exactly filled the
buffer.

Change-Id: I1b1ae546c01f018a9b4e198f918c2d9eb86015d6
Reviewed-on: https://gerrit.openafs.org/12908
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Andrew Deason <adeason@sinenomine.net>
This commit is contained in:
Andrew Deason 2018-02-15 16:41:33 -06:00 committed by Benjamin Kaduk
parent 4f7550dcaf
commit a66629eac4

View File

@ -213,6 +213,7 @@ MainCommand(struct cmd_syndesc *as, void *arock)
}
if (version_flag) {
memset(version, 0, sizeof(version));
code = rx_GetServerVersion(s, host, port, length, version);
if (code < 0) {
@ -220,6 +221,7 @@ MainCommand(struct cmd_syndesc *as, void *arock)
errno);
exit(1);
}
version[sizeof(version) - 1] = '\0';
printf("AFS version: %s\n", version);
fflush(stdout);