Fix some of the problems reported by cppcheck

Thanks to Christian for running the static code analysis tool against
subsurface...

There were some false positives, a few style issues that I'll ignore for
now, and two actual potential bugs.

First: Don't check unsigned variables for < 0

This has been around for a while and we are lucky that while technically a
bug it still works as expected. Passing a negative idx simply turns it
into a very large unsigned integer which then fails the > dive_table.nr
test. So it still gets a NULL returned. A bug? Yes. Critical? No.

Mismatched allocation and free

This is an actual bug that potentially could cause issues. We allocate
memory with malloc and free it with g_free. Not good.

Reported-by: Cristian Ionescu-Idbohrn <cristian.ionescu-idbohrn@axis.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2012-09-18 19:51:48 -04:00
parent f73e5b7268
commit d14932058f
5 changed files with 7 additions and 7 deletions

2
dive.c
View file

@ -277,7 +277,7 @@ static void sanitize_gasmix(struct gasmix *mix)
/* Sane mix? */
if (o2 <= 1000 && he <= 1000 && o2+he <= 1000)
return;
fprintf(stderr, "Odd gasmix: %d O2 %d He\n", o2, he);
fprintf(stderr, "Odd gasmix: %u O2 %u He\n", o2, he);
memset(mix, 0, sizeof(*mix));
}