diff options
author | Jeff Layton <jlayton@samba.org> | 2012-01-17 14:43:24 -0500 |
---|---|---|
committer | Jeff Layton <jlayton@samba.org> | 2012-01-17 14:43:24 -0500 |
commit | 1578af7afadf0c9cb132ea9224c877dced1f0114 (patch) | |
tree | 7666e8674fa66ae5f9e6e0233bdd163318fd141e | |
parent | d8b906abc655726079aaff753b3dfa7517b19067 (diff) | |
download | cifs-utils-1578af7afadf0c9cb132ea9224c877dced1f0114.tar.gz cifs-utils-1578af7afadf0c9cb132ea9224c877dced1f0114.tar.bz2 cifs-utils-1578af7afadf0c9cb132ea9224c877dced1f0114.zip |
cifscreds: make username part of value instead of description
Change the payload to be "username:password". Since usernames can't
contain ':', this is suitable delimiter. Also, create_description
is just a sprintf now, so eliminate it.
Signed-off-by: Jeff Layton <jlayton@samba.org>
-rw-r--r-- | cifscreds.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/cifscreds.c b/cifscreds.c index a6cec98..b6c1fb6 100644 --- a/cifscreds.c +++ b/cifscreds.c @@ -83,30 +83,17 @@ static void usage(void) exit(EXIT_FAILURE); } -/* create key's description string from given credentials */ -static char * -create_description(const char *addr, char *desc) -{ - char *str_end; - int str_len; - - sprintf(desc, "%s:a:%s", THIS_PROGRAM_NAME, addr); - - return desc; -} - /* search a specific key in keyring */ static key_serial_t key_search(const char *addr) { - char desc[INET6_ADDRSTRLEN + MAX_USERNAME_SIZE + \ - + sizeof(THIS_PROGRAM_NAME) + 3]; + char desc[INET6_ADDRSTRLEN + sizeof(THIS_PROGRAM_NAME) + 4]; key_serial_t key, *pk; void *keylist; char *buffer; int count, dpos, n, ret; - create_description(addr, desc); + sprintf(desc, "%s:a:%s", THIS_PROGRAM_NAME, addr); /* read the key payload data */ count = keyctl_read_alloc(DEST_KEYRING, &keylist); @@ -208,12 +195,17 @@ key_search_all_out: static key_serial_t key_add(const char *addr, const char *user, const char *pass) { - char desc[INET6_ADDRSTRLEN + MAX_USERNAME_SIZE + sizeof(THIS_PROGRAM_NAME) + 3]; + int len; + char desc[INET6_ADDRSTRLEN + sizeof(THIS_PROGRAM_NAME) + 4]; + char val[MOUNT_PASSWD_SIZE + MAX_USERNAME_SIZE + 2]; + + /* set key description */ + sprintf(desc, "%s:a:%s", THIS_PROGRAM_NAME, addr); - create_description(addr, desc); + /* set payload contents */ + len = sprintf(val, "%s:%s", user, pass); - return add_key("user", desc, pass, strnlen(pass, MOUNT_PASSWD_SIZE) + 1, - DEST_KEYRING); + return add_key("user", desc, val, len + 1, DEST_KEYRING); } /* add command handler */ |