summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2016-03-31 21:30:11 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2016-10-07 12:35:57 -0800
commitb2ed2d50e3488a191d42f21f5c01022fd4dcb07d (patch)
tree1b3e2ed008c724284a5a9b72d63a9c5eed5c179f
parentf936676a04688e71b009ae665c8cf2f13191a776 (diff)
bcache: fix a null ptr deref in the xattr code
-rw-r--r--drivers/md/bcache/xattr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/md/bcache/xattr.c b/drivers/md/bcache/xattr.c
index 297ef230c4cc..7cdac88c1b3e 100644
--- a/drivers/md/bcache/xattr.c
+++ b/drivers/md/bcache/xattr.c
@@ -260,11 +260,12 @@ static size_t bch_xattr_emit(struct dentry *dentry,
bch_xattr_type_to_handler(xattr->x_type);
if (handler && (!handler->list || handler->list(dentry))) {
- const size_t prefix_len = strlen(handler->prefix);
+ const char *prefix = handler->prefix ?: handler->name;
+ const size_t prefix_len = strlen(prefix);
const size_t total_len = prefix_len + xattr->x_name_len + 1;
if (buffer && total_len <= buffer_size) {
- memcpy(buffer, handler->prefix, prefix_len);
+ memcpy(buffer, prefix, prefix_len);
memcpy(buffer + prefix_len,
xattr->x_name, xattr->x_name_len);
buffer[prefix_len + xattr->x_name_len] = '\0';