summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--src/metaentry.c4
2 files changed, 7 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 7cf7a77..96d7b49 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,9 @@ Latest stuff (planned release date: 2015-09-??)
* BUGFIX: Applying metadata with extended attribute having null byte
in value zeroed all following bytes of this xattr value.
+ * BUGFIX: Reading extended attributes while not having permissions
+ resulted in crash.
+
* Empty directories not present in metadata can be now removed when
applying stored metadata if -E / --remove-empty-dirs option is used.
diff --git a/src/metaentry.c b/src/metaentry.c
index fdb7f71..25bb00f 100644
--- a/src/metaentry.c
+++ b/src/metaentry.c
@@ -266,11 +266,14 @@ mentry_create(const char *path)
continue;
mentry->xattr_names[i] = xstrdup(attr);
+ mentry->xattr_values[i] = NULL;
+
vsize = getxattr(path, attr, NULL, 0);
if (vsize < 0) {
msg(MSG_ERROR, "getxattr failed for %s: %s\n",
path, strerror(errno));
free(list);
+ mentry->xattrs = i + 1;
mentry_free(mentry);
return NULL;
}
@@ -283,6 +286,7 @@ mentry_create(const char *path)
msg(MSG_ERROR, "getxattr failed for %s: %s\n",
path, strerror(errno));
free(list);
+ mentry->xattrs = i + 1;
mentry_free(mentry);
return NULL;
}