diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2013-11-22 13:31:52 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-22 13:31:52 -0800 |
commit | a6b35141e4d38b045182d0820cf4e3e9bd2143eb (patch) | |
tree | a74b590ed083a2191cbee0e6ee453aa9a67a6d44 | |
parent | 781266bf180c84f229798c0d420d4fc3a7a1d29b (diff) | |
download | subsurface-a6b35141e4d38b045182d0820cf4e3e9bd2143eb.tar.gz |
Don't parse 32bit hex values with strtol
On a 32bit machine this will truncate values with MSB set to 0x7fffffff
Fixes #164
(thanks to Linus for pointing me in the right direction)
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | libdivecomputer.h | 2 | ||||
-rw-r--r-- | parse-xml.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/libdivecomputer.h b/libdivecomputer.h index 65b45c813..cc5aa7555 100644 --- a/libdivecomputer.h +++ b/libdivecomputer.h @@ -19,7 +19,7 @@ typedef struct device_data_t { dc_descriptor_t *descriptor; const char *vendor, *product, *devname; const char *model; - unsigned int deviceid, diveid; + uint32_t deviceid, diveid; dc_device_t *device; dc_context_t *context; int preexisting; diff --git a/parse-xml.c b/parse-xml.c index a7a44c5d0..97c93fc6d 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -656,7 +656,7 @@ static void double_to_permil(char *buffer, void *_i) static void hex_value(char *buffer, void *_i) { uint32_t *i = _i; - *i = strtol(buffer, NULL, 16); + *i = strtoul(buffer, NULL, 16); } static void get_tripflag(char *buffer, void *_tf) |