|
@@ -726,9 +726,9 @@ out1:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int nfs_idmap_instantiate(struct key *key, struct key *authkey, char *data)
|
|
|
+static int nfs_idmap_instantiate(struct key *key, struct key *authkey, char *data, size_t datalen)
|
|
|
{
|
|
|
- return key_instantiate_and_link(key, data, strlen(data) + 1,
|
|
|
+ return key_instantiate_and_link(key, data, datalen,
|
|
|
id_resolver_cache->thread_keyring,
|
|
|
authkey);
|
|
|
}
|
|
@@ -738,6 +738,7 @@ static int nfs_idmap_read_and_verify_message(struct idmap_msg *im,
|
|
|
struct key *key, struct key *authkey)
|
|
|
{
|
|
|
char id_str[NFS_UINT_MAXLEN];
|
|
|
+ size_t len;
|
|
|
int ret = -ENOKEY;
|
|
|
|
|
|
/* ret = -ENOKEY */
|
|
@@ -747,13 +748,15 @@ static int nfs_idmap_read_and_verify_message(struct idmap_msg *im,
|
|
|
case IDMAP_CONV_NAMETOID:
|
|
|
if (strcmp(upcall->im_name, im->im_name) != 0)
|
|
|
break;
|
|
|
- sprintf(id_str, "%d", im->im_id);
|
|
|
- ret = nfs_idmap_instantiate(key, authkey, id_str);
|
|
|
+ /* Note: here we store the NUL terminator too */
|
|
|
+ len = sprintf(id_str, "%d", im->im_id) + 1;
|
|
|
+ ret = nfs_idmap_instantiate(key, authkey, id_str, len);
|
|
|
break;
|
|
|
case IDMAP_CONV_IDTONAME:
|
|
|
if (upcall->im_id != im->im_id)
|
|
|
break;
|
|
|
- ret = nfs_idmap_instantiate(key, authkey, im->im_name);
|
|
|
+ len = strlen(im->im_name);
|
|
|
+ ret = nfs_idmap_instantiate(key, authkey, im->im_name, len);
|
|
|
break;
|
|
|
default:
|
|
|
ret = -EINVAL;
|