summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2014-01-07 16:41:20 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-01-09 09:29:22 +0800
commit065221aac7ec7b762e642a0bf71b58cef7078e85 (patch)
treebd1bdb5a5e5e65ff0521ce28c24ed30956af245d
parent304f5e8569fb7786d50bd529da09ba866edd3b1c (diff)
downloadsubsurface-065221aac7ec7b762e642a0bf71b58cef7078e85.tar.gz
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 <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--libdivecomputer.c4
1 files 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);