[PATCH 2/3] libdivecomputer.c: Try not to pass NULL to fopen()
Lubomir I. Ivanov
neolit123 at gmail.com
Tue Jan 7 06:41:20 UTC 2014
From: "Lubomir I. Ivanov" <neolit123 at gmail.com>
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 at gmail.com>
---
libdivecomputer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libdivecomputer.c b/libdivecomputer.c
index 105a081..78d3808 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);
--
1.7.11.msysgit.0
More information about the subsurface
mailing list