From 4d8168cc5793d5dfc2b263b5700f8fe5088c9cf4 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Tue, 7 Jan 2014 16:41:20 +0200 Subject: libdivecomputer.c: Try not to pass NULL to fopen() C99 7.1.4, says nothing about passing NULL to fopen(), which means that it isn't portable and there are no guaranties that the return will be a NULL pointer or that that a library implementation will not assert or SYSSEGV in the middle of the fopen() branch. libdivecomputer.c's 'dumpfile_name' and 'logfile_name' could cause problems in that regard. A possible fix for #411 Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- libdivecomputer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libdivecomputer.c') diff --git a/libdivecomputer.c b/libdivecomputer.c index 105a08133..78d3808f9 100644 --- a/libdivecomputer.c +++ b/libdivecomputer.c @@ -676,7 +676,7 @@ static const char *do_device_import(device_data_t *data) dc_buffer_t *buffer = dc_buffer_new (0); rc = dc_device_dump (device, buffer); - if (rc == DC_STATUS_SUCCESS) { + if (rc == DC_STATUS_SUCCESS && dumpfile_name) { FILE* fp = subsurface_fopen(dumpfile_name, "wb"); if (fp != NULL) { fwrite (dc_buffer_get_data (buffer), 1, dc_buffer_get_size (buffer), fp); @@ -721,7 +721,7 @@ const char *do_libdivecomputer_import(device_data_t *data) data->device = NULL; data->context = NULL; - if (data->libdc_log) + if (data->libdc_log && logfile_name) fp = subsurface_fopen(logfile_name, "w"); rc = dc_context_new(&data->context); -- cgit v1.2.3-70-g09d2