diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2015-09-16 11:03:54 -0400 |
|---|---|---|
| committer | Steve Dickson <steved@redhat.com> | 2015-09-16 11:21:41 -0400 |
| commit | 0b463a7bc09d89e0e141546ea5c5c59d94c5fefe (patch) | |
| tree | 42cf28f56413d5c291ea8448f9522ddcd09c674a | |
| parent | 49f6c29fcfd924b2b964cce75623463c0d1c0d59 (diff) | |
| download | nfs-utils-0b463a7bc09d89e0e141546ea5c5c59d94c5fefe.tar.gz nfs-utils-0b463a7bc09d89e0e141546ea5c5c59d94c5fefe.tar.xz nfs-utils-0b463a7bc09d89e0e141546ea5c5c59d94c5fefe.zip | |
nfsidmap: Fix error handling in name_lookup()
As near as I can tell, the exit status of nfsidmap is supposed to be
zero (success) or one (failure).
The return value of name_lookup() becomes the exit status, so it
should return only zero or one.
The libnfsidmap calls return a signed integer, either 0 or negative
errno values. These have to be translated to an exit status.
libkeyutils calls return a signed long, either 0 or -1. These also
have to be translated to an exit status.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
| -rw-r--r-- | utils/nfsidmap/nfsidmap.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/utils/nfsidmap/nfsidmap.c b/utils/nfsidmap/nfsidmap.c index d356806..a8d2ccb 100644 --- a/utils/nfsidmap/nfsidmap.c +++ b/utils/nfsidmap/nfsidmap.c @@ -238,7 +238,7 @@ static int id_lookup(char *name_at_domain, key_serial_t key, int type) /* * Find the name@domain string from either a user or group id */ -int name_lookup(char *id, key_serial_t key, int type) +static int name_lookup(char *id, key_serial_t key, int type) { char name[IDMAP_NAMESZ]; char domain[NFS4_MAX_DOMAIN_LEN]; @@ -247,11 +247,10 @@ int name_lookup(char *id, key_serial_t key, int type) int rc; rc = nfs4_get_default_domain(NULL, domain, NFS4_MAX_DOMAIN_LEN); - if (rc != 0) { + if (rc) { xlog_errno(rc, "name_lookup: nfs4_get_default_domain failed: %m"); - rc = -1; - goto out; + return EXIT_FAILURE; } if (type == USER) { @@ -261,16 +260,18 @@ int name_lookup(char *id, key_serial_t key, int type) gid = atoi(id); rc = nfs4_gid_to_name(gid, domain, name, IDMAP_NAMESZ); } - if (rc < 0) + if (rc) { xlog_errno(rc, "name_lookup: %s: failed: %m", (type == USER ? "nfs4_uid_to_name" : "nfs4_gid_to_name")); + return EXIT_FAILURE; + } - if (rc == 0) { - rc = keyctl_instantiate(key, &name, strlen(name), 0); - if (rc < 0) - xlog_err("name_lookup: keyctl_instantiate failed: %m"); + rc = EXIT_SUCCESS; + if (keyctl_instantiate(key, &name, strlen(name), 0)) { + rc = EXIT_FAILURE; + xlog_err("name_lookup: keyctl_instantiate failed: %m"); } -out: + return rc; } |
