bozo: Ignore ListKeys ka_KeyCheckSum return value
authorAndrew Deason <adeason@sinenomine.net>
Wed, 4 Jun 2014 14:42:46 +0000 (09:42 -0500)
committerD Brashear <shadow@your-file-system.com>
Thu, 5 Jun 2014 11:17:45 +0000 (07:17 -0400)
With commit c04de52da4e89e15b211b4a19a3d9bc4d612b209, an error in
ka_KeyCheckSum here makes the entire BOZO_ListKeys RPC to fail. This
caused two changes:

 - That commit makes the RPC fail in situations where it did not
   before. But even if we cannot calculate the checksum, we can still
   return other information about the key, so this is undesirable.

 - It masks the previous 'code' value, returned from stat(). The
   return code of stat() is now effectively ignored, except for the
   purposes of setting st_mtime, whereas previously a failure caused
   the RPC to fail. This is a behavior change.

So, effectively revert c04de52da4e89e15b211b4a19a3d9bc4d612b209.
Explicitly cast the return value of ka_KeyCheckSum to void, to make it
clear that we are intentionally ignoring the return value, so
hopefully this will not be flagged as a warning by code analysis tools
such as coverity.

Change-Id: Iac745d7c88ed7c2d97660e6949caa63580eef6e2
Reviewed-on: http://gerrit.openafs.org/11194
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Perry Ruiter <pruiter@sinenomine.net>
Reviewed-by: D Brashear <shadow@your-file-system.com>

src/bozo/bosoprocs.c

index d90ed95..20dd956 100644 (file)
@@ -613,9 +613,10 @@ SBOZO_ListKeys(struct rx_call *acall, afs_int32 an, afs_int32 *akvno,
        akeyinfo->mod_sec = tstat.st_mtime;
     }
 
-    /* If the key is bad, this will produce an error. Should never happen,
-     * but ... */
-    code = ka_KeyCheckSum(tkeys.key[an].key, &akeyinfo->keyCheckSum);
+    /* This will return an error if the key is 'bad' (bad checksum, weak DES
+     * key, etc). But we don't care, since we can still return the other
+     * information about the key, so ignore the result. */
+    (void)ka_KeyCheckSum(tkeys.key[an].key, &akeyinfo->keyCheckSum);
 
   fail:
     if (noauth)