From 065221aac7ec7b762e642a0bf71b58cef7078e85 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Tue, 7 Jan 2014 16:41:20 +0200 Subject: [PATCH] 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(-) 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);