[PATCH 2/6] util/zlib-extra.c: don't pass NULL to gzerror.
David Bremner
david at tethera.net
Mon Apr 13 05:36:19 PDT 2020
Although (as of 1.2.11) zlib checks this parameter before writing to
it, the docs don't promise to keep doing so, so be safe.
---
notmuch-dump.c | 6 +++---
notmuch-restore.c | 2 +-
util/zlib-extra.c | 2 +-
util/zlib-extra.h | 5 +++++
4 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/notmuch-dump.c b/notmuch-dump.c
index 65e02639..af346ba2 100644
--- a/notmuch-dump.c
+++ b/notmuch-dump.c
@@ -21,7 +21,7 @@
#include "notmuch-client.h"
#include "hex-escape.h"
#include "string-util.h"
-#include <zlib.h>
+#include "zlib-extra.h"
static int
database_dump_config (notmuch_database_t *notmuch, gzFile output)
@@ -316,7 +316,7 @@ notmuch_database_dump (notmuch_database_t *notmuch,
ret = gzflush (output, Z_FINISH);
if (ret) {
- fprintf (stderr, "Error flushing output: %s\n", gzerror (output, NULL));
+ fprintf (stderr, "Error flushing output: %s\n", gzerror_str (output));
goto DONE;
}
@@ -332,7 +332,7 @@ notmuch_database_dump (notmuch_database_t *notmuch,
ret = gzclose_w (output);
if (ret) {
fprintf (stderr, "Error closing %s: %s\n", name_for_error,
- gzerror (output, NULL));
+ gzerror_str (output));
ret = EXIT_FAILURE;
output = NULL;
goto DONE;
diff --git a/notmuch-restore.c b/notmuch-restore.c
index 4b509d95..9a8b7fb5 100644
--- a/notmuch-restore.c
+++ b/notmuch-restore.c
@@ -450,7 +450,7 @@ notmuch_restore_command (notmuch_config_t *config, int argc, char *argv[])
if (input && gzclose_r (input)) {
fprintf (stderr, "Error closing %s: %s\n",
- name_for_error, gzerror (input, NULL));
+ name_for_error, gzerror_str (input));
ret = EXIT_FAILURE;
}
diff --git a/util/zlib-extra.c b/util/zlib-extra.c
index f691cccf..623f6d62 100644
--- a/util/zlib-extra.c
+++ b/util/zlib-extra.c
@@ -80,7 +80,7 @@ const char *
gz_error_string (util_status_t status, gzFile file)
{
if (status == UTIL_GZERROR)
- return gzerror (file, NULL);
+ return gzerror_str (file);
else
return util_error_string (status);
}
diff --git a/util/zlib-extra.h b/util/zlib-extra.h
index 209fa998..296dc914 100644
--- a/util/zlib-extra.h
+++ b/util/zlib-extra.h
@@ -27,6 +27,11 @@ gz_getline (void *ctx, char **lineptr, ssize_t *bytes_read, gzFile stream);
const char *
gz_error_string (util_status_t status, gzFile stream);
+/* Call gzerror with a dummy errno argument, the docs don't promise to
+ * support the NULL case */
+inline const char *
+gzerror_str(gzFile file) { int dummy; return gzerror (file, &dummy); }
+
#ifdef __cplusplus
}
#endif
--
2.25.1
More information about the notmuch
mailing list