diff options
| author | 2017-02-07 12:43:27 +0100 | |
|---|---|---|
| committer | 2017-02-07 12:43:27 +0100 | |
| commit | fbd8494d5e4e46bf2e90cb6116903e404374fb56 (patch) | |
| tree | 13a26772b7f47b0d96455bad371a3a4efc485003 /src/bplist.c | |
| parent | 3a5520ccce42ac145794f2195cc60e8ae855a8cb (diff) | |
| download | libplist-fbd8494d5e4e46bf2e90cb6116903e404374fb56.tar.gz libplist-fbd8494d5e4e46bf2e90cb6116903e404374fb56.tar.bz2 | |
bplist: Make sure to bail out if malloc() fails in parse_string_node()
Credit to Wang Junjie <zhunkibatu@gmail.com> (#93)
Diffstat (limited to 'src/bplist.c')
| -rw-r--r-- | src/bplist.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/bplist.c b/src/bplist.c index 81bd716..20e5090 100644 --- a/src/bplist.c +++ b/src/bplist.c | |||
| @@ -289,6 +289,11 @@ static plist_t parse_string_node(const char **bnode, uint64_t size) | |||
| 289 | 289 | ||
| 290 | data->type = PLIST_STRING; | 290 | data->type = PLIST_STRING; |
| 291 | data->strval = (char *) malloc(sizeof(char) * (size + 1)); | 291 | data->strval = (char *) malloc(sizeof(char) * (size + 1)); |
| 292 | if (!data->strval) { | ||
| 293 | plist_free_data(data); | ||
| 294 | PLIST_BIN_ERR("%s: Could not allocate %" PRIu64 " bytes\n", __func__, sizeof(char) * (size + 1)); | ||
| 295 | return NULL; | ||
| 296 | } | ||
| 292 | memcpy(data->strval, *bnode, size); | 297 | memcpy(data->strval, *bnode, size); |
| 293 | data->strval[size] = '\0'; | 298 | data->strval[size] = '\0'; |
| 294 | data->length = strlen(data->strval); | 299 | data->length = strlen(data->strval); |
