From: Simon Wilkinson Date: Fri, 8 Mar 2013 13:02:26 +0000 (+0000) Subject: bos: Don't overflow buffer with key data X-Git-Tag: upstream/1.8.0_pre1^2~1306 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=4e9c6eb9d5192888d79a07042c9cb6029def9726;p=packages%2Fo%2Fopenafs.git bos: Don't overflow buffer with key data When parsing key data from the command line, don't overflow the buffer used to hold it - instead just give an error if the data is too long. Caught by coverity (#985775) Change-Id: I44fb62d30c5022e650475b3ca51a28bcb7cf1e06 Reviewed-on: http://gerrit.openafs.org/9550 Reviewed-by: Derrick Brashear Reviewed-by: Jeffrey Altman Tested-by: BuildBot --- diff --git a/src/bozo/bos.c b/src/bozo/bos.c index 5e951a9f6..1e366d10e 100644 --- a/src/bozo/bos.c +++ b/src/bozo/bos.c @@ -793,9 +793,12 @@ AddKey(struct cmd_syndesc *as, void *arock) tconn = GetConn(as, 1); memset(&tkey, 0, sizeof(struct ktc_encryptionKey)); - if (as->parms[1].items) - strcpy(buf, as->parms[1].items->data); - else { + if (as->parms[1].items) { + if (strlcpy(buf, as->parms[1].items->data, sizeof(buf)) >= sizeof(buf)) { + fprintf(stderr, "Key data too long for buffer\n"); + exit(1); + } + } else { /* prompt for key */ code = UI_UTIL_read_pw_string(buf, sizeof(buf), "input key: ", 0); if (code || strlen(buf) == 0) {