]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
bos: Don't overflow buffer with key data
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 8 Mar 2013 13:02:26 +0000 (13:02 +0000)
committerStephan Wiesand <stephan.wiesand@desy.de>
Wed, 12 Mar 2014 13:07:01 +0000 (06:07 -0700)
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)

Reviewed-on: http://gerrit.openafs.org/9550
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
(cherry picked from commit 4e9c6eb9d5192888d79a07042c9cb6029def9726)

Change-Id: Ic1892ba4cd5e69c48003073a758a47a08b84a890
Reviewed-on: http://gerrit.openafs.org/10861
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Perry Ruiter <pruiter@sinenomine.net>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
src/bozo/bos.c

index 5a4368c39cdcfc50187f5f525dc1e122a5a6e611..7b02d15cf7d7e7fc05ba80475b3259042085a22d 100644 (file)
@@ -808,9 +808,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 = des_read_pw_string(buf, sizeof(buf), "input key: ", 0);
        if (code || strlen(buf) == 0) {