ptuser: guarantee that all names are valid C strings 96/7896/11
authorGarrett Wollman <wollman@csail.mit.edu>
Sat, 28 Jul 2012 22:35:13 +0000 (18:35 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Sun, 17 Jul 2016 03:57:16 +0000 (23:57 -0400)
commita0417565a3ab7e6a49d7c48efd72d62bdeb4436c
treefba90c11ab20b0822c621dcd3d6a2b492fa2e018
parentf14d263a73f0be75e4de92f62e836fb2e55680dd
ptuser: guarantee that all names are valid C strings

The prname type is represented in XDR as a vector[PR_MAXNAMELEN]
of char, not as a string, which means that the XDR (de)serializer
will not guarantee null-termination.  Guarantee that all buffers
used in the public protection server API are in fact valid strings
by disallowing any names that are exactly PR_MAXNAMELEN (64)
characters long.  DO NOT silently truncate names that are even
longer than this.  Consistently use the prname typedef in
declarations to reinforce the length limitation to those reading
the header file.  Introduces a new protection error code,
PRNAMETOOLONG, which will be returned if either IN or OUT parameters
would exceed the limit.

[kaduk@mit.edu convert macro to static_inline function and expand
at call sites; add string_ wrapper to add checking to viced and libadmin;
export the string_ wrapper from libafsauthent for the windows build]

Change-Id: I65f850afcfea2fd2bc0110ca7b7f6ecca247dd58
Reviewed-on: https://gerrit.openafs.org/7896
Reviewed-by: Chas Williams <3chas3@gmail.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/libadmin/pts/afs_ptsAdmin.c
src/libafsauthent/afsauthent.def
src/libafsauthent/libafsauthent.la.sym
src/ptserver/liboafs_prot.la.sym
src/ptserver/pterror.et
src/ptserver/ptserver.h
src/ptserver/ptuser.c
src/ptserver/ptuser.h
src/viced/host.c