mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
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:
parent
f73e5b7268
commit
d14932058f
5 changed files with 7 additions and 7 deletions
2
dive.c
2
dive.c
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
2
dive.h
2
dive.h
|
@ -366,7 +366,7 @@ extern struct dive_table dive_table;
|
|||
extern int selected_dive;
|
||||
#define current_dive (get_dive(selected_dive))
|
||||
|
||||
static inline struct dive *get_dive(unsigned int nr)
|
||||
static inline struct dive *get_dive(int nr)
|
||||
{
|
||||
if (nr >= dive_table.nr || nr < 0)
|
||||
return NULL;
|
||||
|
|
|
@ -110,7 +110,7 @@ void dump_selection(void)
|
|||
int i;
|
||||
struct dive *dive;
|
||||
|
||||
printf("currently selected are %d dives:", amount_selected);
|
||||
printf("currently selected are %u dives:", amount_selected);
|
||||
for_each_dive(i, dive) {
|
||||
if (dive->selected)
|
||||
printf(" %d", i);
|
||||
|
|
|
@ -96,13 +96,13 @@ static void convert_volume_pressure(int ml, int mbar, double *v, double *p)
|
|||
volume *= bar_to_atm(mbar / 1000.0);
|
||||
}
|
||||
|
||||
if (output_units.pressure == PSI) {
|
||||
if (output_units.pressure == PSI)
|
||||
pressure = mbar_to_PSI(mbar);
|
||||
} else
|
||||
else
|
||||
pressure = mbar / 1000.0;
|
||||
*p = pressure;
|
||||
}
|
||||
*v = volume;
|
||||
*p = pressure;
|
||||
}
|
||||
|
||||
static int convert_weight(int grams, double *m)
|
||||
|
|
|
@ -226,7 +226,7 @@ static gboolean ask_save_changes()
|
|||
"You have unsaved changes to file: %s \nWould you like to save those before closing the datafile?",
|
||||
existing_filename);
|
||||
label = gtk_label_new (label_text);
|
||||
g_free(label_text);
|
||||
free(label_text);
|
||||
}
|
||||
gtk_container_add (GTK_CONTAINER (content), label);
|
||||
gtk_widget_show_all (dialog);
|
||||
|
|
Loading…
Reference in a new issue