case XML_READER_TYPE_ELEMENT:
empty = xmlTextReaderIsEmptyElement(reader);
r = xml2_xmlattr_setup(a, &list, reader);
- if (r != ARCHIVE_OK)
- return (r);
- r = xml_start(a, name, &list);
+ if (r == ARCHIVE_OK)
+ r = xml_start(a, name, &list);
xmlattr_cleanup(&list);
if (r != ARCHIVE_OK)
return (r);
{
lesser_count++;
tmp = (char **)realloc(lesser, lesser_count * sizeof(char *));
- if (!tmp)
+ if (!tmp) {
+ free(greater);
+ free(lesser);
return (ARCHIVE_FATAL);
+ }
lesser = tmp;
lesser[lesser_count - 1] = strings[i];
}
{
greater_count++;
tmp = (char **)realloc(greater, greater_count * sizeof(char *));
- if (!tmp)
+ if (!tmp) {
+ free(greater);
+ free(lesser);
return (ARCHIVE_FATAL);
+ }
greater = tmp;
greater[greater_count - 1] = strings[i];
}
}
for (xattr_i = 0; xattr_i < xattr_size;
xattr_i += strlen(xattr_names + xattr_i) + 1) {
+ char *xattr_val_saved;
ssize_t s;
int f;
ret = ARCHIVE_WARN;
goto exit_xattr;
}
+ xattr_val_saved = xattr_val;
xattr_val = realloc(xattr_val, s);
if (xattr_val == NULL) {
archive_set_error(&a->archive, ENOMEM,
"Failed to get metadata(xattr)");
ret = ARCHIVE_WARN;
+ free(xattr_val_saved);
goto exit_xattr;
}
s = fgetxattr(tmpfd, xattr_names + xattr_i, xattr_val, s, 0, 0);