auth: make PGetTokens2 work with 3-char cellnames 99/13599/4
authorMark Vitale <mvitale@sinenomine.net>
Thu, 23 May 2019 02:50:00 +0000 (22:50 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 5 Jul 2019 20:05:23 +0000 (16:05 -0400)
commitb0278994826f6bd1dfebc39f26282b8fbdadf1a0
treeb3b1dff9ce8c8dd96788c10e325d0d6e707b1f61
parent95ae30c30d98a3219fd021e0ed83200c1b6c266f
auth: make PGetTokens2 work with 3-char cellnames

PGetTokens2 accepts two different types of input:
- an integer 'iterator' to request the nth token set for a user
- a string cellname to request the user's token set for that cell

Unfortunately, it distinguishes between these by assuming if the input
length is sizeof(afs_int32) (4 bytes), it must be an integer.  This
assumption is incorrect if the cellname is three (3) characters long
plus a nul terminator.

The result is that the cellname string is interpreted as a very large
"n"; the subsequent search for the user's "very-large-nth-token" fails,
making it appear that the user has no valid token for this cell.

Improve on this heuristic by double-checking any putative integer input.
If it is actually a 3-character string, then process the input as a
cellname instead.

Introduced by commit 5ec5ad5dcca84e99e5f55987cc4f787cd482fdde 'New
GetToken pioctl'.

While here, add doxygen comments.

Change-Id: Ifa226fa1c35b95bc32642870f73359f97a9f1d61
Reviewed-on: https://gerrit.openafs.org/13599
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
src/afs/afs_pioctl.c