_alpm_delta_parse: free memory on error
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
e892234207
commit
cd5e4b89f4
1 changed files with 8 additions and 4 deletions
|
|
@ -306,10 +306,10 @@ alpm_delta_t *_alpm_delta_parse(alpm_handle_t *handle, const char *line)
|
||||||
|
|
||||||
/* start at index 1 -- match 0 is the entire match */
|
/* start at index 1 -- match 0 is the entire match */
|
||||||
len = pmatch[1].rm_eo - pmatch[1].rm_so;
|
len = pmatch[1].rm_eo - pmatch[1].rm_so;
|
||||||
STRNDUP(delta->delta, &line[pmatch[1].rm_so], len, return NULL);
|
STRNDUP(delta->delta, &line[pmatch[1].rm_so], len, goto error);
|
||||||
|
|
||||||
len = pmatch[2].rm_eo - pmatch[2].rm_so;
|
len = pmatch[2].rm_eo - pmatch[2].rm_so;
|
||||||
STRNDUP(delta->delta_md5, &line[pmatch[2].rm_so], len, return NULL);
|
STRNDUP(delta->delta_md5, &line[pmatch[2].rm_so], len, goto error);
|
||||||
|
|
||||||
len = pmatch[3].rm_eo - pmatch[3].rm_so;
|
len = pmatch[3].rm_eo - pmatch[3].rm_so;
|
||||||
if(len < sizeof(filesize)) {
|
if(len < sizeof(filesize)) {
|
||||||
|
|
@ -319,12 +319,16 @@ alpm_delta_t *_alpm_delta_parse(alpm_handle_t *handle, const char *line)
|
||||||
}
|
}
|
||||||
|
|
||||||
len = pmatch[4].rm_eo - pmatch[4].rm_so;
|
len = pmatch[4].rm_eo - pmatch[4].rm_so;
|
||||||
STRNDUP(delta->from, &line[pmatch[4].rm_so], len, return NULL);
|
STRNDUP(delta->from, &line[pmatch[4].rm_so], len, goto error);
|
||||||
|
|
||||||
len = pmatch[5].rm_eo - pmatch[5].rm_so;
|
len = pmatch[5].rm_eo - pmatch[5].rm_so;
|
||||||
STRNDUP(delta->to, &line[pmatch[5].rm_so], len, return NULL);
|
STRNDUP(delta->to, &line[pmatch[5].rm_so], len, goto error);
|
||||||
|
|
||||||
return delta;
|
return delta;
|
||||||
|
|
||||||
|
error:
|
||||||
|
_alpm_delta_free(delta);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef NUM_MATCHES
|
#undef NUM_MATCHES
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue