Signed-off-by: Jeff Layton <[email protected]>
---
 cifs.upcall.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/cifs.upcall.c b/cifs.upcall.c
index d83dddf..12df8cc 100644
--- a/cifs.upcall.c
+++ b/cifs.upcall.c
@@ -444,12 +444,14 @@ handle_krb5_mech(const char *oid, const char *principal, 
DATA_BLOB * secblob,
 #define DKD_HAVE_UID           0x10
 #define DKD_HAVE_PID           0x20
 #define DKD_HAVE_CREDUID       0x40
+#define DKD_HAVE_USERNAME      0x80
 #define DKD_MUSTHAVE_SET (DKD_HAVE_HOSTNAME|DKD_HAVE_VERSION|DKD_HAVE_SEC)
 
 struct decoded_args {
        int ver;
        char *hostname;
        char *ip;
+       char *username;
        uid_t uid;
        uid_t creduid;
        pid_t pid;
@@ -495,6 +497,20 @@ decode_key_description(const char *desc, struct 
decoded_args *arg)
                                return 1;
                        }
                        retval |= DKD_HAVE_IP;
+               } else if (strncmp(tkn, "user=", 5) == 0) {
+                       if (pos == NULL)
+                               len = strlen(tkn);
+                       else
+                               len = pos - tkn;
+
+                       len -= 5;
+                       SAFE_FREE(arg->username);
+                       arg->username = strndup(tkn + 5, len);
+                       if (arg->username == NULL) {
+                               syslog(LOG_ERR, "Unable to allocate memory");
+                               return 1;
+                       }
+                       retval |= DKD_HAVE_USERNAME;
                } else if (strncmp(tkn, "pid=", 4) == 0) {
                        errno = 0;
                        arg->pid = strtol(tkn + 4, NULL, 0);
@@ -865,6 +881,7 @@ out:
        SAFE_FREE(ccname);
        SAFE_FREE(arg.hostname);
        SAFE_FREE(arg.ip);
+       SAFE_FREE(arg.username);
        SAFE_FREE(keydata);
        return rc;
 }
-- 
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