mirror of https://gitee.com/openkylin/linux.git
fs/9p: avoid debug OOPS when reading a long symlink
Reading a symlink longer than the given buffer, a p9_debug use would try to print the link name (not NUL-terminated) using a %s format. Use %.*s instead, and replace the strncpy+strnlen with functionally equivalent strlen+memcpy. Signed-off-by: Jim Meyering <meyering@redhat.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
This commit is contained in:
parent
4cbe5a555f
commit
ba413ab2cc
|
@ -1276,12 +1276,12 @@ static int v9fs_readlink(struct dentry *dentry, char *buffer, int buflen)
|
|||
}
|
||||
|
||||
/* copy extension buffer into buffer */
|
||||
strncpy(buffer, st->extension, buflen);
|
||||
retval = min(strlen(st->extension)+1, (size_t)buflen);
|
||||
memcpy(buffer, st->extension, retval);
|
||||
|
||||
p9_debug(P9_DEBUG_VFS, "%s -> %s (%s)\n",
|
||||
dentry->d_name.name, st->extension, buffer);
|
||||
p9_debug(P9_DEBUG_VFS, "%s -> %s (%.*s)\n",
|
||||
dentry->d_name.name, st->extension, buflen, buffer);
|
||||
|
||||
retval = strnlen(buffer, buflen);
|
||||
done:
|
||||
p9stat_free(st);
|
||||
kfree(st);
|
||||
|
|
Loading…
Reference in New Issue