Commit 41979f25 authored by Wayne Davison's avatar Wayne Davison

Make sure that get_xattr_data() never tries to malloc 0 bytes.

parent 4b1553e2
......@@ -161,8 +161,11 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
int no_missing_error)
{
size_t datum_len = sys_lgetxattr(fname, name, NULL, 0);
size_t extra_len = *len_ptr;
char *ptr;
*len_ptr = datum_len;
if (datum_len == (size_t)-1) {
if (errno == ENOTSUP || no_missing_error)
return NULL;
......@@ -172,12 +175,12 @@ static char *get_xattr_data(const char *fname, const char *name, size_t *len_ptr
return NULL;
}
if (datum_len + *len_ptr < datum_len /* checks for overflow */
|| !(ptr = new_array(char, datum_len + *len_ptr)))
if (!datum_len && !extra_len)
extra_len = 1; /* request non-zero amount of memory */
if (datum_len + extra_len < datum_len /* checks for overflow */
|| !(ptr = new_array(char, datum_len + extra_len)))
out_of_memory("get_xattr_data");
*len_ptr = datum_len;
if (datum_len) {
size_t len = sys_lgetxattr(fname, name, ptr, datum_len);
if (len != datum_len) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment