diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2012-11-19 20:02:34 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2012-11-19 20:05:04 -0800 |
commit | f3d87a2b164cd605620a8d2e5cd0b35bfc28ce2d (patch) | |
tree | 26cad9bc8060f03d8a6846b72812bbee10ed7328 | |
parent | 2a78f3436ccf157977eccf9435c2680e2d7bc3d3 (diff) | |
download | subsurface-f3d87a2b164cd605620a8d2e5cd0b35bfc28ce2d.tar.gz |
Fix stupid off by one error in Uemis downloader
We are accessing offset 24 in an array of length 24. To make things easier
for the base64 conversion we just treat this as an off by three error and
instead create an array large enough for 27 elements and convert a
sufficient number of base64 chars to initialize all of them.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | uemis-downloader.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/uemis-downloader.c b/uemis-downloader.c index 922aa90ae..adf400581 100644 --- a/uemis-downloader.c +++ b/uemis-downloader.c @@ -380,7 +380,7 @@ static void buffer_insert(char **buffer, int *buffer_size, char *buf) int obj_dive; int obj_log; int offset, len; - uint8_t hdr[24]; + uint8_t hdr[27]; /* since we want to insert into the buffer... if there's * nothing there, this makes absolutely no sense so just @@ -406,7 +406,7 @@ static void buffer_insert(char **buffer, int *buffer_size, char *buf) * some info from that in order to make sense of the data in * the dive info */ b64 = strstr(ptr, "<bin>") + 5; - decode(b64, hdr, 32); + decode(b64, hdr, 36); cbuf = convert_dive_details(buf, hdr); offset = ptr - *buffer; len = strlen(cbuf); |