bozo: Let the bnode operations allocate output strings
The GetInstanceParm and GetStatus bosserver RPCs return output strings
by first allocating a 256 byte buffer then calling the bnode operations
bnode_GetParm() and bnode_GetString() to fill those buffers. The RPC
output strings are automatically freed by XDR.
In order to support large output strings in the future, change these
bnode operations to allocate the output strings and to use safe string
functions to duplicate and format strings.
Update the ez, cron, fs, and dafs getstring and getparm operations to
allocate the output string or return an error.
Return BZIO over the wire when a string cannot be allocated, since
ENOMEM is not a portable wire error code. (Use BZIO to be consistent
existing code added in commit
fda2bc874751ca479365dc6389c0eebb41a0bda1
(Allocate pathname buffers dynamically).
Commit
ea276e83e3 (OPENAFS-SA-2019-001: Skip server OUT args on
error) is a prerequisite for this change.
Change-Id: Id16184efc95d614846b912177b220c8e87b7a88b
Reviewed-on: https://gerrit.openafs.org/14766
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>