Signed-off-by: Jeff Layton <[email protected]>
---
cifs.upcall.c | 28 +++++++++++++---------------
1 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/cifs.upcall.c b/cifs.upcall.c
index 34b0638..33b7e4c 100644
--- a/cifs.upcall.c
+++ b/cifs.upcall.c
@@ -675,6 +675,7 @@ int main(const int argc, char *const argv[])
char hostbuf[NI_MAXHOST], *host;
struct decoded_args arg;
const char *oid;
+ uid_t uid;
hostbuf[0] = '\0';
memset(&arg, 0, sizeof(arg));
@@ -748,27 +749,24 @@ int main(const int argc, char *const argv[])
goto out;
}
- if (!legacy_uid && (have & DKD_HAVE_CREDUID)) {
- rc = setuid(arg.creduid);
- if (rc == -1) {
- syslog(LOG_ERR, "setuid: %s", strerror(errno));
- goto out;
- }
- ccname = find_krb5_cc(CIFS_DEFAULT_KRB5_DIR, arg.creduid);
- } else if (have & DKD_HAVE_UID) {
- rc = setuid(arg.uid);
- if (rc == -1) {
- syslog(LOG_ERR, "setuid: %s", strerror(errno));
- goto out;
- }
- ccname = find_krb5_cc(CIFS_DEFAULT_KRB5_DIR, arg.uid);
- } else {
+ if (!legacy_uid && (have & DKD_HAVE_CREDUID))
+ uid = arg.creduid;
+ else if (have & DKD_HAVE_UID)
+ uid = arg.uid;
+ else {
/* no uid= or creduid= parm -- something is wrong */
syslog(LOG_ERR, "No uid= or creduid= parm specified");
rc = 1;
goto out;
}
+ rc = setuid(uid);
+ if (rc == -1) {
+ syslog(LOG_ERR, "setuid: %s", strerror(errno));
+ goto out;
+ }
+ ccname = find_krb5_cc(CIFS_DEFAULT_KRB5_DIR, uid);
+
host = arg.hostname;
// do mech specific authorization
--
1.7.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html