aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/cifs/cifssmb.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 1a9fe7f816d..0580da1cf34 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -5720,6 +5720,7 @@ CIFSSMBQAllEAs(const int xid, struct cifs_tcon *tcon,
char *temp_ptr;
char *end_of_smb;
__u16 params, byte_count, data_offset;
+ unsigned int ea_name_len;
cFYI(1, "In Query All EAs path %s", searchName);
QAllEAsRetry:
@@ -5814,6 +5815,10 @@ QAllEAsRetry:
list_len -= 4;
temp_fea = ea_response_data->list;
temp_ptr = (char *)temp_fea;
+
+ if (ea_name)
+ ea_name_len = strlen(ea_name);
+
while (list_len > 0) {
unsigned int name_len;
__u16 value_len;
@@ -5837,7 +5842,8 @@ QAllEAsRetry:
}
if (ea_name) {
- if (strncmp(ea_name, temp_ptr, name_len) == 0) {
+ if (ea_name_len == name_len &&
+ strncmp(ea_name, temp_ptr, name_len) == 0) {
temp_ptr += name_len + 1;
rc = value_len;
if (buf_size == 0)