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

Reply via email to