auth: GetLatestKey should allow NULL return values
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 25 Feb 2011 01:21:38 +0000 (01:21 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 26 Feb 2011 11:57:05 +0000 (03:57 -0800)
Existing callers in the code use
afsconf_GetLatestKey(dir, NULL, NULL) to check for the existence of
a key file. We need to permit NULL values for the return pointers
to this function.

Also update the tests to check for this behaviour.

Change-Id: I94e74138ddeed8d167c1e6f12e297411c638e1b9
Reviewed-on: http://gerrit.openafs.org/4050
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/auth/keys.c
tests/auth/keys-t.c

index e1440da..aa265f1 100644 (file)
@@ -729,8 +729,11 @@ afsconf_GetLatestKey(struct afsconf_dir *dir, afs_int32 *kvno,
     /* XXX - Should check that the key is of the correct length */
 
     /* Copy out the relevant details */
-    *kvno = typedKey->kvno;
-    memcpy(key, typedKey->key.val, 8);
+    if (kvno != NULL)
+       *kvno = typedKey->kvno;
+
+    if (key != NULL)
+       memcpy(key, typedKey->key.val, 8);
 
     afsconf_typedKey_put(&typedKey);
 
index d02d655..2e32946 100644 (file)
@@ -105,7 +105,7 @@ int main(int argc, char **argv)
     int code;
     int i;
 
-    plan(122);
+    plan(123);
 
     /* Create a temporary afs configuration directory */
 
@@ -146,6 +146,10 @@ int main(int argc, char **argv)
     ok(memcmp(&key, "\x19\x16\xfe\xe6\xba\x77\x2f\xfd", 8) == 0,
        " ... and correct key");
 
+    /* Check that GetLatestKey works if called with NULL parameters */
+    code = afsconf_GetLatestKey(dir, NULL, NULL);
+    is_int(0, code, "afsconf_GetLatestKey works if parameters are NULL");
+
     /* Verify that random access using GetKey works properly */
     code = afsconf_GetKey(dir, 2, &key);
     is_int(0, code, "afsconf_GetKey returns successfully");