aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2012-11-19 20:02:34 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-11-19 20:05:04 -0800
commitf3d87a2b164cd605620a8d2e5cd0b35bfc28ce2d (patch)
tree26cad9bc8060f03d8a6846b72812bbee10ed7328
parent2a78f3436ccf157977eccf9435c2680e2d7bc3d3 (diff)
downloadsubsurface-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.c4
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);