GCC 9 introduced new warnings/errors and is flagging a sprintf with a
format-overflow warning. With --checking-enabled, this error is causing
testpt.c to fail during compile.
Change the buffer size from 16 bytes to PR_MAXNAMELEN+1 and use snprintf
instead of sprintf. Generate an error message and exit if snprintf
truncates the string.
Reviewed-on: https://gerrit.openafs.org/13663
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
(cherry picked from commit
4a57cc54dfb6789a86ee735360ee44209c1a901a)
Change-Id: I2f8012e7fb4384f3ad877d2c9beb5f00b03716b8
Reviewed-on: https://gerrit.openafs.org/13730
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
CreateGroup(int g)
{
afs_int32 code;
- char name[16];
+ char name[PR_MAXNAMELEN + 1];
afs_int32 id = 0;
afs_int32 owner = 0;
char *ownerName = NULL;
break;
}
- sprintf(name, "%s:%s%d", ownerName, createPrefix, g);
+ code = snprintf(name, sizeof(name), "%s:%s%d", ownerName, createPrefix, g);
+ if (code >= sizeof(name)) {
+ fprintf(stderr, "%s: generated group name is too long: %s:%s%d\n",
+ whoami, ownerName, createPrefix, g);
+ exit(13);
+ }
code = ubik_PR_NewEntry(pruclient, 0, name, PRGRP, owner, &id);
if (code) {
if (code == PREXIST) {