diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2016-03-31 21:30:11 -0800 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2016-10-07 12:35:57 -0800 |
commit | b2ed2d50e3488a191d42f21f5c01022fd4dcb07d (patch) | |
tree | 1b3e2ed008c724284a5a9b72d63a9c5eed5c179f | |
parent | f936676a04688e71b009ae665c8cf2f13191a776 (diff) |
bcache: fix a null ptr deref in the xattr code
-rw-r--r-- | drivers/md/bcache/xattr.c | 5 |
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'; |