[PATCH 12/13] Add some sanity checks

Anton Lundin glance at acc.umu.se
Tue Dec 10 15:53:36 UTC 2013


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 <glance at acc.umu.se>
---
 libdivecomputer.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/libdivecomputer.c b/libdivecomputer.c
index 2dee138..98245fb 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) {
-- 
1.8.3.2



More information about the subsurface mailing list