bozo: Let the bnode operations allocate output strings 66/14766/12
authorMichael Meffie <mmeffie@sinenomine.net>
Tue, 27 Jul 2021 18:35:23 +0000 (14:35 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Sun, 26 Jun 2022 08:19:29 +0000 (04:19 -0400)
commitdea6422b356929613efa9bd582075894f3007df7
treecfac2a029f9bfc1e1fe27835c31a31c9db3491a2
parent3e098400a788617f1c8ec6f9d7ab4bcc4b4274cb
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>
src/bozo/bnode.c
src/bozo/bnode_internal.h
src/bozo/bosoprocs.c
src/bozo/bosprototypes.h
src/bozo/bosserver.c
src/bozo/cronbnodeops.c
src/bozo/ezbnodeops.c
src/bozo/fsbnodeops.c