[PATCH 1/4] divelist.c: Fix possible NULL pointer deref.
Lubomir I. Ivanov
neolit123 at gmail.com
Wed Dec 11 05:26:47 UTC 2013
From: "Lubomir I. Ivanov" <neolit123 at gmail.com>
calculate_cns():
The check if prev_dive is NULL should be before calling
prev_dive->when.
Reported by the program cppcheck.
Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
divelist.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/divelist.c b/divelist.c
index c69a34d..0004832 100644
--- a/divelist.c
+++ b/divelist.c
@@ -266,10 +266,12 @@ static int calculate_cns(struct dive *dive)
divenr = get_divenr(dive);
if (divenr) {
prev_dive = get_dive(divenr -1 );
- endtime = prev_dive->when + prev_dive->duration.seconds;
- if (prev_dive && dive->when < (endtime + 3600 * 12)) {
- cns = calculate_cns(prev_dive);
- cns = cns * 1/pow(2, (dive->when - endtime) / (90.0 * 60.0));
+ if (prev_dive) {
+ endtime = prev_dive->when + prev_dive->duration.seconds;
+ if (dive->when < (endtime + 3600 * 12)) {
+ cns = calculate_cns(prev_dive);
+ cns = cns * 1/pow(2, (dive->when - endtime) / (90.0 * 60.0));
+ }
}
}
/* Caclulate the cns for each sample in this dive and sum them */
--
1.7.11.msysgit.0
More information about the subsurface
mailing list