tests: Correctly pass string args in superuser-t
authorAndrew Deason <adeason@sinenomine.net>
Mon, 23 May 2011 20:42:10 +0000 (15:42 -0500)
committerDerrick Brashear <shadow@dementia.org>
Wed, 25 May 2011 19:47:37 +0000 (12:47 -0700)
We need to give a NULL pointer for string OUT arguments, so XDR knows
to allocate a new string. Also free the string each time so it gets
set back to NULL.

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

tests/auth/superuser-t.c

index 3d3bda0..c2ebbc6 100644 (file)
@@ -123,7 +123,7 @@ startClient(char *configPath)
     struct hostent *he;
     afs_uint32 addr;
     afs_int32 result;
-    char *string;
+    char *string = NULL;
 
     plan(63);
 
@@ -255,6 +255,8 @@ startClient(char *configPath)
     is_int(0, code, "Can get identity back");
     is_string("<LocalAuth>", string, "Forged token is super user");
 
+    xdr_free((xdrproc_t)xdr_string, &string);
+
     /* Throw away this connection and security class */
     rx_DestroyConnection(conn);
     rxs_Release(class);
@@ -275,9 +277,11 @@ startClient(char *configPath)
     is_int(EPERM, code,
           "Running new interface RPC as non-super user fails as expected");
     code = TEST_WhoAmI(conn, &string);
+    xdr_free((xdrproc_t)xdr_string, &string);
     is_int(EPERM, code,
           "Running RPC returning string fails as expected");
     code = TEST_NewWhoAmI(conn, &string);
+    xdr_free((xdrproc_t)xdr_string, &string);
     is_int(EPERM, code,
           "Running new interface RPC returning string fails as expected");
     ok(afsconf_AddUser(dir, "rpctest") == 0,
@@ -289,9 +293,11 @@ startClient(char *configPath)
     code = TEST_WhoAmI(conn, &string);
     is_int(0, code, "Running RPC returning string as %s works", "rpctest");
     is_string("rpctest", string, "Returned user string matches");
+    xdr_free((xdrproc_t)xdr_string, &string);
     code = TEST_NewWhoAmI(conn, &string);
     is_int(0, code, "Running new RPC returning string as %s works", "rpctest");
     is_string("rpctest", string, "Returned user string for new interface matches");
+    xdr_free((xdrproc_t)xdr_string, &string);
     rx_DestroyConnection(conn);
     rxs_Release(class);
 
@@ -310,9 +316,11 @@ startClient(char *configPath)
     is_int(EPERM, code,
           "Running new interface RPC as non-super user fails as expected");
     code = TEST_WhoAmI(conn, &string);
+    xdr_free((xdrproc_t)xdr_string, &string);
     is_int(EPERM, code,
           "Running RPC returning string fails as expected");
     code = TEST_NewWhoAmI(conn, &string);
+    xdr_free((xdrproc_t)xdr_string, &string);
     is_int(EPERM, code,
           "Running new interface RPC returning string fails as expected");
 
@@ -326,11 +334,13 @@ startClient(char *configPath)
     code = TEST_WhoAmI(conn, &string);
     is_int(0, code, "Running RPC returning string as %s works", "rpctest/admin");
     is_string("rpctest.admin", string, "Returned user string matches");
+    xdr_free((xdrproc_t)xdr_string, &string);
     code = TEST_NewWhoAmI(conn, &string);
     is_int(0, code, "Running new interface RPC returning string as %s works",
           "rpctest/admin");
     is_string("rpctest.admin", string,
              "Returned user string from new interface matches");
+    xdr_free((xdrproc_t)xdr_string, &string);
 
     rx_DestroyConnection(conn);
     rxs_Release(class);