aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2014-01-15 15:07:06 +0000
committerDavid Howells <dhowells@redhat.com>2014-01-15 15:07:06 +0000
commit47cf4085c2525c8a15607b5ae0726cde0f3ec413 (patch)
treea077dae4b140a3bd8b05c874fdfb02ff89da6511
parenta6523da06977c3ed4d288f533dc58250a4e69189 (diff)
downloadkeyutils-47cf4085c2525c8a15607b5ae0726cde0f3ec413.tar.gz
keyctl: Exit rather than returning from act_xxx() functions
Exit rather than returning from act_xxx() functions so that the Coverity checker doesn't think that memory is leaked from functions that allocate memory. Signed-off-by: David Howells <dhowells@redhat.com>
-rw-r--r--keyctl.c232
1 files changed, 117 insertions, 115 deletions
diff --git a/keyctl.c b/keyctl.c
index 3325cd6..f99f90e 100644
--- a/keyctl.c
+++ b/keyctl.c
@@ -22,48 +22,50 @@
#include "keyutils.h"
struct command {
- int (*action)(int argc, char *argv[]);
+ void (*action)(int argc, char *argv[]) __attribute__((noreturn));
const char *name;
const char *format;
};
-static int act_keyctl___version(int argc, char *argv[]);
-static int act_keyctl_show(int argc, char *argv[]);
-static int act_keyctl_add(int argc, char *argv[]);
-static int act_keyctl_padd(int argc, char *argv[]);
-static int act_keyctl_request(int argc, char *argv[]);
-static int act_keyctl_request2(int argc, char *argv[]);
-static int act_keyctl_prequest2(int argc, char *argv[]);
-static int act_keyctl_update(int argc, char *argv[]);
-static int act_keyctl_pupdate(int argc, char *argv[]);
-static int act_keyctl_newring(int argc, char *argv[]);
-static int act_keyctl_revoke(int argc, char *argv[]);
-static int act_keyctl_clear(int argc, char *argv[]);
-static int act_keyctl_link(int argc, char *argv[]);
-static int act_keyctl_unlink(int argc, char *argv[]);
-static int act_keyctl_search(int argc, char *argv[]);
-static int act_keyctl_read(int argc, char *argv[]);
-static int act_keyctl_pipe(int argc, char *argv[]);
-static int act_keyctl_print(int argc, char *argv[]);
-static int act_keyctl_list(int argc, char *argv[]);
-static int act_keyctl_rlist(int argc, char *argv[]);
-static int act_keyctl_describe(int argc, char *argv[]);
-static int act_keyctl_rdescribe(int argc, char *argv[]);
-static int act_keyctl_chown(int argc, char *argv[]);
-static int act_keyctl_chgrp(int argc, char *argv[]);
-static int act_keyctl_setperm(int argc, char *argv[]);
-static int act_keyctl_session(int argc, char *argv[]);
-static int act_keyctl_instantiate(int argc, char *argv[]);
-static int act_keyctl_pinstantiate(int argc, char *argv[]);
-static int act_keyctl_negate(int argc, char *argv[]);
-static int act_keyctl_timeout(int argc, char *argv[]);
-static int act_keyctl_security(int argc, char *argv[]);
-static int act_keyctl_new_session(int argc, char *argv[]);
-static int act_keyctl_reject(int argc, char *argv[]);
-static int act_keyctl_reap(int argc, char *argv[]);
-static int act_keyctl_purge(int argc, char *argv[]);
-static int act_keyctl_invalidate(int argc, char *argv[]);
-static int act_keyctl_get_persistent(int argc, char *argv[]);
+#define nr __attribute__((noreturn))
+
+static nr void act_keyctl___version(int argc, char *argv[]);
+static nr void act_keyctl_show(int argc, char *argv[]);
+static nr void act_keyctl_add(int argc, char *argv[]);
+static nr void act_keyctl_padd(int argc, char *argv[]);
+static nr void act_keyctl_request(int argc, char *argv[]);
+static nr void act_keyctl_request2(int argc, char *argv[]);
+static nr void act_keyctl_prequest2(int argc, char *argv[]);
+static nr void act_keyctl_update(int argc, char *argv[]);
+static nr void act_keyctl_pupdate(int argc, char *argv[]);
+static nr void act_keyctl_newring(int argc, char *argv[]);
+static nr void act_keyctl_revoke(int argc, char *argv[]);
+static nr void act_keyctl_clear(int argc, char *argv[]);
+static nr void act_keyctl_link(int argc, char *argv[]);
+static nr void act_keyctl_unlink(int argc, char *argv[]);
+static nr void act_keyctl_search(int argc, char *argv[]);
+static nr void act_keyctl_read(int argc, char *argv[]);
+static nr void act_keyctl_pipe(int argc, char *argv[]);
+static nr void act_keyctl_print(int argc, char *argv[]);
+static nr void act_keyctl_list(int argc, char *argv[]);
+static nr void act_keyctl_rlist(int argc, char *argv[]);
+static nr void act_keyctl_describe(int argc, char *argv[]);
+static nr void act_keyctl_rdescribe(int argc, char *argv[]);
+static nr void act_keyctl_chown(int argc, char *argv[]);
+static nr void act_keyctl_chgrp(int argc, char *argv[]);
+static nr void act_keyctl_setperm(int argc, char *argv[]);
+static nr void act_keyctl_session(int argc, char *argv[]);
+static nr void act_keyctl_instantiate(int argc, char *argv[]);
+static nr void act_keyctl_pinstantiate(int argc, char *argv[]);
+static nr void act_keyctl_negate(int argc, char *argv[]);
+static nr void act_keyctl_timeout(int argc, char *argv[]);
+static nr void act_keyctl_security(int argc, char *argv[]);
+static nr void act_keyctl_new_session(int argc, char *argv[]);
+static nr void act_keyctl_reject(int argc, char *argv[]);
+static nr void act_keyctl_reap(int argc, char *argv[]);
+static nr void act_keyctl_purge(int argc, char *argv[]);
+static nr void act_keyctl_invalidate(int argc, char *argv[]);
+static nr void act_keyctl_get_persistent(int argc, char *argv[]);
const struct command commands[] = {
{ act_keyctl___version, "--version", "" },
@@ -192,7 +194,7 @@ int main(int argc, char *argv[])
if (myngroups < 0)
error("Unable to get Groups\n");
- return best->action(argc, argv);
+ best->action(argc, argv);
} /* end main() */
@@ -231,11 +233,11 @@ static void format(void)
/*
* Display version information
*/
-static int act_keyctl___version(int argc, char *argv[])
+static void act_keyctl___version(int argc, char *argv[])
{
printf("keyctl from %s (Built %s)\n",
keyutils_version_string, keyutils_build_string);
- return 0;
+ exit(0);
}
/*****************************************************************************/
@@ -322,7 +324,7 @@ write_mask:
/*
* show the parent process's session keyring
*/
-static int act_keyctl_show(int argc, char *argv[])
+static void act_keyctl_show(int argc, char *argv[])
{
key_serial_t keyring = KEY_SPEC_SESSION_KEYRING;
int hex_key_IDs = 0;
@@ -340,7 +342,7 @@ static int act_keyctl_show(int argc, char *argv[])
keyring = get_key_id(argv[1]);
dump_key_tree(keyring, argc == 2 ? "Keyring" : "Session Keyring", hex_key_IDs);
- return 0;
+ exit(0);
} /* end act_keyctl_show() */
@@ -348,7 +350,7 @@ static int act_keyctl_show(int argc, char *argv[])
/*
* add a key
*/
-static int act_keyctl_add(int argc, char *argv[])
+static void act_keyctl_add(int argc, char *argv[])
{
key_serial_t dest;
int ret;
@@ -364,7 +366,7 @@ static int act_keyctl_add(int argc, char *argv[])
/* print the resulting key ID */
printf("%d\n", ret);
- return 0;
+ exit(0);
} /* end act_keyctl_add() */
@@ -372,7 +374,7 @@ static int act_keyctl_add(int argc, char *argv[])
/*
* add a key, reading from a pipe
*/
-static int act_keyctl_padd(int argc, char *argv[])
+static void act_keyctl_padd(int argc, char *argv[])
{
key_serial_t dest;
size_t datalen;
@@ -393,7 +395,7 @@ static int act_keyctl_padd(int argc, char *argv[])
/* print the resulting key ID */
printf("%d\n", ret);
- return 0;
+ exit(0);
} /* end act_keyctl_padd() */
@@ -401,7 +403,7 @@ static int act_keyctl_padd(int argc, char *argv[])
/*
* request a key
*/
-static int act_keyctl_request(int argc, char *argv[])
+static void act_keyctl_request(int argc, char *argv[])
{
key_serial_t dest;
int ret;
@@ -419,7 +421,7 @@ static int act_keyctl_request(int argc, char *argv[])
/* print the resulting key ID */
printf("%d\n", ret);
- return 0;
+ exit(0);
} /* end act_keyctl_request() */
@@ -427,7 +429,7 @@ static int act_keyctl_request(int argc, char *argv[])
/*
* request a key, with recourse to /sbin/request-key
*/
-static int act_keyctl_request2(int argc, char *argv[])
+static void act_keyctl_request2(int argc, char *argv[])
{
key_serial_t dest;
int ret;
@@ -445,7 +447,7 @@ static int act_keyctl_request2(int argc, char *argv[])
/* print the resulting key ID */
printf("%d\n", ret);
- return 0;
+ exit(0);
} /* end act_keyctl_request2() */
@@ -454,7 +456,7 @@ static int act_keyctl_request2(int argc, char *argv[])
* request a key, with recourse to /sbin/request-key, reading the callout info
* from a pipe
*/
-static int act_keyctl_prequest2(int argc, char *argv[])
+static void act_keyctl_prequest2(int argc, char *argv[])
{
char *args[6];
size_t datalen;
@@ -469,7 +471,7 @@ static int act_keyctl_prequest2(int argc, char *argv[])
args[4] = argv[3];
args[5] = NULL;
- return act_keyctl_request2(argc + 1, args);
+ act_keyctl_request2(argc + 1, args);
} /* end act_keyctl_prequest2() */
@@ -477,7 +479,7 @@ static int act_keyctl_prequest2(int argc, char *argv[])
/*
* update a key
*/
-static int act_keyctl_update(int argc, char *argv[])
+static void act_keyctl_update(int argc, char *argv[])
{
key_serial_t key;
@@ -489,7 +491,7 @@ static int act_keyctl_update(int argc, char *argv[])
if (keyctl_update(key, argv[2], strlen(argv[2])) < 0)
error("keyctl_update");
- return 0;
+ exit(0);
} /* end act_keyctl_update() */
@@ -497,7 +499,7 @@ static int act_keyctl_update(int argc, char *argv[])
/*
* update a key, reading from a pipe
*/
-static int act_keyctl_pupdate(int argc, char *argv[])
+static void act_keyctl_pupdate(int argc, char *argv[])
{
key_serial_t key;
size_t datalen;
@@ -512,7 +514,7 @@ static int act_keyctl_pupdate(int argc, char *argv[])
if (keyctl_update(key, data, datalen) < 0)
error("keyctl_update");
- return 0;
+ exit(0);
} /* end act_keyctl_pupdate() */
@@ -520,7 +522,7 @@ static int act_keyctl_pupdate(int argc, char *argv[])
/*
* create a new keyring
*/
-static int act_keyctl_newring(int argc, char *argv[])
+static void act_keyctl_newring(int argc, char *argv[])
{
key_serial_t dest;
int ret;
@@ -535,7 +537,7 @@ static int act_keyctl_newring(int argc, char *argv[])
error("add_key");
printf("%d\n", ret);
- return 0;
+ exit(0);
} /* end act_keyctl_newring() */
@@ -543,7 +545,7 @@ static int act_keyctl_newring(int argc, char *argv[])
/*
* revoke a key
*/
-static int act_keyctl_revoke(int argc, char *argv[])
+static void act_keyctl_revoke(int argc, char *argv[])
{
key_serial_t key;
@@ -555,7 +557,7 @@ static int act_keyctl_revoke(int argc, char *argv[])
if (keyctl_revoke(key) < 0)
error("keyctl_revoke");
- return 0;
+ exit(0);
} /* end act_keyctl_revoke() */
@@ -563,7 +565,7 @@ static int act_keyctl_revoke(int argc, char *argv[])
/*
* clear a keyring
*/
-static int act_keyctl_clear(int argc, char *argv[])
+static void act_keyctl_clear(int argc, char *argv[])
{
key_serial_t keyring;
@@ -575,7 +577,7 @@ static int act_keyctl_clear(int argc, char *argv[])
if (keyctl_clear(keyring) < 0)
error("keyctl_clear");
- return 0;
+ exit(0);
} /* end act_keyctl_clear() */
@@ -583,7 +585,7 @@ static int act_keyctl_clear(int argc, char *argv[])
/*
* link a key to a keyring
*/
-static int act_keyctl_link(int argc, char *argv[])
+static void act_keyctl_link(int argc, char *argv[])
{
key_serial_t keyring, key;
@@ -596,7 +598,7 @@ static int act_keyctl_link(int argc, char *argv[])
if (keyctl_link(key, keyring) < 0)
error("keyctl_link");
- return 0;
+ exit(0);
} /* end act_keyctl_link() */
@@ -616,7 +618,7 @@ static int act_keyctl_unlink_func(key_serial_t parent, key_serial_t key,
/*
* Unlink a key from a keyring or from the session keyring tree.
*/
-static int act_keyctl_unlink(int argc, char *argv[])
+static void act_keyctl_unlink(int argc, char *argv[])
{
key_serial_t keyring, key;
int n;
@@ -635,14 +637,14 @@ static int act_keyctl_unlink(int argc, char *argv[])
printf("%d links removed\n", n);
}
- return 0;
+ exit(0);
}
/*****************************************************************************/
/*
* search a keyring for a key
*/
-static int act_keyctl_search(int argc, char *argv[])
+static void act_keyctl_search(int argc, char *argv[])
{
key_serial_t keyring, dest;
int ret;
@@ -662,7 +664,7 @@ static int act_keyctl_search(int argc, char *argv[])
/* print the ID of the key we found */
printf("%d\n", ret);
- return 0;
+ exit(0);
} /* end act_keyctl_search() */
@@ -670,7 +672,7 @@ static int act_keyctl_search(int argc, char *argv[])
/*
* read a key
*/
-static int act_keyctl_read(int argc, char *argv[])
+static void act_keyctl_read(int argc, char *argv[])
{
key_serial_t key;
void *buffer;
@@ -689,7 +691,7 @@ static int act_keyctl_read(int argc, char *argv[])
if (ret == 0) {
printf("No data in key\n");
- return 0;
+ exit(0);
}
/* hexdump the contents */
@@ -717,7 +719,7 @@ static int act_keyctl_read(int argc, char *argv[])
} while (--ret > 0);
printf("\n");
- return 0;
+ exit(0);
} /* end act_keyctl_read() */
@@ -725,7 +727,7 @@ static int act_keyctl_read(int argc, char *argv[])
/*
* read a key and dump raw to stdout
*/
-static int act_keyctl_pipe(int argc, char *argv[])
+static void act_keyctl_pipe(int argc, char *argv[])
{
key_serial_t key;
void *buffer;
@@ -743,7 +745,7 @@ static int act_keyctl_pipe(int argc, char *argv[])
if (ret > 0 && write(1, buffer, ret) < 0)
error("write");
- return 0;
+ exit(0);
} /* end act_keyctl_pipe() */
@@ -751,7 +753,7 @@ static int act_keyctl_pipe(int argc, char *argv[])
/*
* read a key and dump to stdout in printable form
*/
-static int act_keyctl_print(int argc, char *argv[])
+static void act_keyctl_print(int argc, char *argv[])
{
key_serial_t key;
void *buffer;
@@ -776,7 +778,7 @@ static int act_keyctl_print(int argc, char *argv[])
/* it is */
printf("%s\n", (char *) buffer);
- return 0;
+ exit(0);
not_printable:
/* it isn't */
@@ -785,7 +787,7 @@ not_printable:
for (loop = ret; loop > 0; loop--, p++)
printf("%02hhx", *p);
printf("\n");
- return 0;
+ exit(0);
} /* end act_keyctl_print() */
@@ -793,7 +795,7 @@ not_printable:
/*
* list a keyring
*/
-static int act_keyctl_list(int argc, char *argv[])
+static void act_keyctl_list(int argc, char *argv[])
{
key_serial_t keyring, key, *pk;
key_perm_t perm;
@@ -817,7 +819,7 @@ static int act_keyctl_list(int argc, char *argv[])
if (count == 0) {
printf("keyring is empty\n");
- return 0;
+ exit(0);
}
/* list the keys in the keyring */
@@ -863,7 +865,7 @@ static int act_keyctl_list(int argc, char *argv[])
} while (--count);
- return 0;
+ exit(0);
} /* end act_keyctl_list() */
@@ -871,7 +873,7 @@ static int act_keyctl_list(int argc, char *argv[])
/*
* produce a raw list of a keyring
*/
-static int act_keyctl_rlist(int argc, char *argv[])
+static void act_keyctl_rlist(int argc, char *argv[])
{
key_serial_t keyring, key, *pk;
void *keylist;
@@ -901,7 +903,7 @@ static int act_keyctl_rlist(int argc, char *argv[])
}
}
- return 0;
+ exit(0);
} /* end act_keyctl_rlist() */
@@ -909,7 +911,7 @@ static int act_keyctl_rlist(int argc, char *argv[])
/*
* describe a key
*/
-static int act_keyctl_describe(int argc, char *argv[])
+static void act_keyctl_describe(int argc, char *argv[])
{
key_serial_t key;
key_perm_t perm;
@@ -979,7 +981,7 @@ static int act_keyctl_describe(int argc, char *argv[])
tlen, tlen, buffer,
buffer + dpos);
- return 0;
+ exit(0);
} /* end act_keyctl_describe() */
@@ -987,7 +989,7 @@ static int act_keyctl_describe(int argc, char *argv[])
/*
* get raw key description
*/
-static int act_keyctl_rdescribe(int argc, char *argv[])
+static void act_keyctl_rdescribe(int argc, char *argv[])
{
key_serial_t key;
char *buffer, *q;
@@ -1014,7 +1016,7 @@ static int act_keyctl_rdescribe(int argc, char *argv[])
/* display raw description */
printf("%s\n", buffer);
- return 0;
+ exit(0);
} /* end act_keyctl_rdescribe() */
@@ -1022,7 +1024,7 @@ static int act_keyctl_rdescribe(int argc, char *argv[])
/*
* change a key's ownership
*/
-static int act_keyctl_chown(int argc, char *argv[])
+static void act_keyctl_chown(int argc, char *argv[])
{
key_serial_t key;
uid_t uid;
@@ -1042,7 +1044,7 @@ static int act_keyctl_chown(int argc, char *argv[])
if (keyctl_chown(key, uid, -1) < 0)
error("keyctl_chown");
- return 0;
+ exit(0);
} /* end act_keyctl_chown() */
@@ -1050,7 +1052,7 @@ static int act_keyctl_chown(int argc, char *argv[])
/*
* change a key's group ownership
*/
-static int act_keyctl_chgrp(int argc, char *argv[])
+static void act_keyctl_chgrp(int argc, char *argv[])
{
key_serial_t key;
gid_t gid;
@@ -1070,7 +1072,7 @@ static int act_keyctl_chgrp(int argc, char *argv[])
if (keyctl_chown(key, -1, gid) < 0)
error("keyctl_chown");
- return 0;
+ exit(0);
} /* end act_keyctl_chgrp() */
@@ -1078,7 +1080,7 @@ static int act_keyctl_chgrp(int argc, char *argv[])
/*
* set the permissions on a key
*/
-static int act_keyctl_setperm(int argc, char *argv[])
+static void act_keyctl_setperm(int argc, char *argv[])
{
key_serial_t key;
key_perm_t perm;
@@ -1097,7 +1099,7 @@ static int act_keyctl_setperm(int argc, char *argv[])
if (keyctl_setperm(key, perm) < 0)
error("keyctl_setperm");
- return 0;
+ exit(0);
} /* end act_keyctl_setperm() */
@@ -1105,7 +1107,7 @@ static int act_keyctl_setperm(int argc, char *argv[])
/*
* start a process in a new session
*/
-static int act_keyctl_session(int argc, char *argv[])
+static void act_keyctl_session(int argc, char *argv[])
{
char *p, *q;
int ret;
@@ -1152,7 +1154,7 @@ static int act_keyctl_session(int argc, char *argv[])
/*
* instantiate a key that's under construction
*/
-static int act_keyctl_instantiate(int argc, char *argv[])
+static void act_keyctl_instantiate(int argc, char *argv[])
{
key_serial_t key, dest;
@@ -1165,7 +1167,7 @@ static int act_keyctl_instantiate(int argc, char *argv[])
if (keyctl_instantiate(key, argv[2], strlen(argv[2]), dest) < 0)
error("keyctl_instantiate");
- return 0;
+ exit(0);
} /* end act_keyctl_instantiate() */
@@ -1173,7 +1175,7 @@ static int act_keyctl_instantiate(int argc, char *argv[])
/*
* instantiate a key, reading from a pipe
*/
-static int act_keyctl_pinstantiate(int argc, char *argv[])
+static void act_keyctl_pinstantiate(int argc, char *argv[])
{
key_serial_t key, dest;
size_t datalen;
@@ -1189,7 +1191,7 @@ static int act_keyctl_pinstantiate(int argc, char *argv[])
if (keyctl_instantiate(key, data, datalen, dest) < 0)
error("keyctl_instantiate");
- return 0;
+ exit(0);
} /* end act_keyctl_pinstantiate() */
@@ -1197,7 +1199,7 @@ static int act_keyctl_pinstantiate(int argc, char *argv[])
/*
* negate a key that's under construction
*/
-static int act_keyctl_negate(int argc, char *argv[])
+static void act_keyctl_negate(int argc, char *argv[])
{
unsigned long timeout;
key_serial_t key, dest;
@@ -1219,7 +1221,7 @@ static int act_keyctl_negate(int argc, char *argv[])
if (keyctl_negate(key, timeout, dest) < 0)
error("keyctl_negate");
- return 0;
+ exit(0);
} /* end act_keyctl_negate() */
@@ -1227,7 +1229,7 @@ static int act_keyctl_negate(int argc, char *argv[])
/*
* set a key's timeout
*/
-static int act_keyctl_timeout(int argc, char *argv[])
+static void act_keyctl_timeout(int argc, char *argv[])
{
unsigned long timeout;
key_serial_t key;
@@ -1247,7 +1249,7 @@ static int act_keyctl_timeout(int argc, char *argv[])
if (keyctl_set_timeout(key, timeout) < 0)
error("keyctl_set_timeout");
- return 0;
+ exit(0);
} /* end act_keyctl_timeout() */
@@ -1255,7 +1257,7 @@ static int act_keyctl_timeout(int argc, char *argv[])
/*
* get a key's security label
*/
-static int act_keyctl_security(int argc, char *argv[])
+static void act_keyctl_security(int argc, char *argv[])
{
key_serial_t key;
char *buffer;
@@ -1272,14 +1274,14 @@ static int act_keyctl_security(int argc, char *argv[])
error("keyctl_getsecurity");
printf("%s\n", buffer);
- return 0;
+ exit(0);
}
/*****************************************************************************/
/*
* install a new session keyring on the parent process
*/
-static int act_keyctl_new_session(int argc, char *argv[])
+static void act_keyctl_new_session(int argc, char *argv[])
{
key_serial_t keyring;
@@ -1298,14 +1300,14 @@ static int act_keyctl_new_session(int argc, char *argv[])
/* print the resulting key ID */
printf("%d\n", keyring);
- return 0;
+ exit(0);
}
/*****************************************************************************/
/*
* reject a key that's under construction
*/
-static int act_keyctl_reject(int argc, char *argv[])
+static void act_keyctl_reject(int argc, char *argv[])
{
unsigned long timeout;
key_serial_t key, dest;
@@ -1342,7 +1344,7 @@ static int act_keyctl_reject(int argc, char *argv[])
if (keyctl_reject(key, timeout, rejerr, dest) < 0)
error("keyctl_negate");
- return 0;
+ exit(0);
}
/*
@@ -1371,7 +1373,7 @@ static int act_keyctl_reap_func(key_serial_t parent, key_serial_t key,
/*
* Reap the dead keys from the session keyring tree
*/
-static int act_keyctl_reap(int argc, char *argv[])
+static void act_keyctl_reap(int argc, char *argv[])
{
int n;
@@ -1386,7 +1388,7 @@ static int act_keyctl_reap(int argc, char *argv[])
n = recursive_session_key_scan(act_keyctl_reap_func, NULL);
printf("%d keys reaped\n", n);
- return 0;
+ exit(0);
}
struct purge_data {
@@ -1500,7 +1502,7 @@ static int act_keyctl_purge_search_func(key_serial_t parent, key_serial_t keyrin
/*
* Purge matching keys from a keyring
*/
-static int act_keyctl_purge(int argc, char *argv[])
+static void act_keyctl_purge(int argc, char *argv[])
{
recursive_key_scanner_t func;
struct purge_data purge = {
@@ -1553,14 +1555,14 @@ static int act_keyctl_purge(int argc, char *argv[])
n = recursive_session_key_scan(func, &purge);
printf("purged %d keys\n", n);
- return 0;
+ exit(0);
}
/*****************************************************************************/
/*
* Invalidate a key
*/
-static int act_keyctl_invalidate(int argc, char *argv[])
+static void act_keyctl_invalidate(int argc, char *argv[])
{
key_serial_t key;
@@ -1572,14 +1574,14 @@ static int act_keyctl_invalidate(int argc, char *argv[])
if (keyctl_invalidate(key) < 0)
error("keyctl_invalidate");
- return 0;
+ exit(0);
}
/*****************************************************************************/
/*
* Get the per-UID persistent keyring
*/
-static int act_keyctl_get_persistent(int argc, char *argv[])
+static void act_keyctl_get_persistent(int argc, char *argv[])
{
key_serial_t dest, ret;
uid_t uid = -1;
@@ -1604,7 +1606,7 @@ static int act_keyctl_get_persistent(int argc, char *argv[])
/* print the resulting key ID */
printf("%d\n", ret);
- return 0;
+ exit(0);
}
/*****************************************************************************/