From 0812d2def2a8d2bcd0bf7b2646dade989d63ae44 Mon Sep 17 00:00:00 2001 From: Anton Lundin Date: Wed, 11 Dec 2013 00:53:36 +0100 Subject: [PATCH] Add some sanity checks If first sample is not a DC_SAMPLE_TIME, we would have bin dereferencing a null pointer. This might actually never happen, unless we talk to a really weird dc, but this makes the static analyzer happier. Signed-off-by: Anton Lundin Signed-off-by: Dirk Hohndel --- libdivecomputer.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libdivecomputer.c b/libdivecomputer.c index 2dee1389d..98245fb9b 100644 --- a/libdivecomputer.c +++ b/libdivecomputer.c @@ -181,6 +181,13 @@ sample_cb(dc_sample_type_t type, dc_sample_value_t value, void *userdata) */ sample = dc->samples ? dc->sample+dc->samples-1 : NULL; + /* + * Ok, sanity check. + * If first sample is not a DC_SAMPLE_TIME, Allocate a sample for us + */ + if (sample == NULL && type != DC_SAMPLE_TIME) + sample = prepare_sample(dc); + switch (type) { case DC_SAMPLE_TIME: if (sample) {