Skip to content

Commit 339e5ed

Browse files
committed
Fix crashes when scanning rdb/rmsgpack files using stack storage
I had mistakenly allocated only 128 bytes, not 128 * sizeof(pointer) bytes.
1 parent 9b4168d commit 339e5ed

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

libretro-db/rmsgpack_dom.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ int rmsgpack_dom_read_with(intfstream_t *fd, struct rmsgpack_dom_value *out, str
430430
return rv;
431431
}
432432

433-
struct rmsgpack_dom_reader_state *rmsgpack_dom_reader_state_new()
433+
struct rmsgpack_dom_reader_state *rmsgpack_dom_reader_state_new(void)
434434
{
435435
struct rmsgpack_dom_reader_state *s = calloc(1, sizeof(struct rmsgpack_dom_reader_state));
436436
s->i = 0;
@@ -451,7 +451,7 @@ int rmsgpack_dom_read(intfstream_t *fd, struct rmsgpack_dom_value *out)
451451
s.i = 0;
452452
s.growable = false;
453453
s.capacity = MAX_DEPTH;
454-
s.stack = alloca(MAX_DEPTH);
454+
s.stack = alloca(MAX_DEPTH*sizeof(struct rmsgpack_dom_value *));
455455
return rmsgpack_dom_read_with(fd, out, &s);
456456
}
457457

libretro-db/rmsgpack_dom.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ struct rmsgpack_dom_value *rmsgpack_dom_value_map_value(
9393

9494
int rmsgpack_dom_read(intfstream_t *stream, struct rmsgpack_dom_value *out);
9595

96-
struct rmsgpack_dom_reader_state *rmsgpack_dom_reader_state_new();
96+
struct rmsgpack_dom_reader_state *rmsgpack_dom_reader_state_new(void);
9797
int rmsgpack_dom_read_with(intfstream_t *stream, struct rmsgpack_dom_value *out, struct rmsgpack_dom_reader_state *state);
9898
void rmsgpack_dom_reader_state_free(struct rmsgpack_dom_reader_state *state);
9999

0 commit comments

Comments
 (0)