mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-22 16:32:13 -07:00
Fix NUL-termination bug in saving from Javascript.
The JS code that retrieves the save-file data from emcc.c doesn't receive a separate length value, but instead expects the data to be in the form of a NUL-terminated string. But emcc.c wasn't NUL-terminating it, so the save data could come out with random cruft on the end.
This commit is contained in:
8
emcc.c
8
emcc.c
@ -806,11 +806,15 @@ char *get_save_file(void)
|
||||
midend_serialise(me, savefile_write, &ctx);
|
||||
size = ctx.pos;
|
||||
|
||||
/* Second pass, to actually write out the data */
|
||||
ctx.buffer = snewn(size, char);
|
||||
/* Second pass, to actually write out the data. We have to put a
|
||||
* terminating \0 on the end (which we expect never to show up in
|
||||
* the actual serialisation format - it's text, not binary) so
|
||||
* that the Javascript side can easily find out the length. */
|
||||
ctx.buffer = snewn(size+1, char);
|
||||
ctx.pos = 0;
|
||||
midend_serialise(me, savefile_write, &ctx);
|
||||
assert(ctx.pos == size);
|
||||
ctx.buffer[ctx.pos] = '\0';
|
||||
|
||||
return ctx.buffer;
|
||||
}
|
||||
|
Reference in New Issue
Block a user