diff options
| author | Peter Wang <novalazy@gmail.com> | 2020-02-08 12:49:22 +1100 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2020-02-13 19:10:42 -0400 |
| commit | c17fca40e2bc5514863d98807aaed318f144fd1a (patch) | |
| tree | a507822484750dd2b832a28a3d5df6ff9f51e64d | |
| parent | e091427d98b0c49e96fb312ad1af6862776b896a (diff) | |
sprinter: change integer method to use int64_t
In particular, timestamps beyond 2038 could overflow the sprinter
interface on systems where time_t is 64-bit but 'int' is a signed 32-bit
integer type.
| -rw-r--r-- | sprinter-json.c | 5 | ||||
| -rw-r--r-- | sprinter-sexp.c | 5 | ||||
| -rw-r--r-- | sprinter-text.c | 5 | ||||
| -rw-r--r-- | sprinter.h | 2 | ||||
| -rwxr-xr-x | test/T160-json.sh | 1 |
5 files changed, 10 insertions, 8 deletions
diff --git a/sprinter-json.c b/sprinter-json.c index c6ec8577..273bdeca 100644 --- a/sprinter-json.c +++ b/sprinter-json.c @@ -1,3 +1,4 @@ +#include <inttypes.h> #include <stdbool.h> #include <stdio.h> #include <talloc.h> @@ -124,11 +125,11 @@ json_string (struct sprinter *sp, const char *val) } static void -json_integer (struct sprinter *sp, int val) +json_integer (struct sprinter *sp, int64_t val) { struct sprinter_json *spj = json_begin_value (sp); - fprintf (spj->stream, "%d", val); + fprintf (spj->stream, "%"PRId64, val); } static void diff --git a/sprinter-sexp.c b/sprinter-sexp.c index 6891ea42..35c007d5 100644 --- a/sprinter-sexp.c +++ b/sprinter-sexp.c @@ -18,6 +18,7 @@ * Author: Peter Feigl <peter.feigl@gmx.at> */ +#include <inttypes.h> #include <stdbool.h> #include <stdio.h> #include <talloc.h> @@ -161,11 +162,11 @@ sexp_keyword (struct sprinter *sp, const char *val) } static void -sexp_integer (struct sprinter *sp, int val) +sexp_integer (struct sprinter *sp, int64_t val) { struct sprinter_sexp *sps = sexp_begin_value (sp); - fprintf (sps->stream, "%d", val); + fprintf (sps->stream, "%"PRId64, val); } static void diff --git a/sprinter-text.c b/sprinter-text.c index 648b54b1..7b68f98c 100644 --- a/sprinter-text.c +++ b/sprinter-text.c @@ -1,3 +1,4 @@ +#include <inttypes.h> #include <stdbool.h> #include <stdio.h> #include <talloc.h> @@ -44,11 +45,11 @@ text_string (struct sprinter *sp, const char *val) } static void -text_integer (struct sprinter *sp, int val) +text_integer (struct sprinter *sp, int64_t val) { struct sprinter_text *sptxt = (struct sprinter_text *) sp; - fprintf (sptxt->stream, "%d", val); + fprintf (sptxt->stream, "%"PRId64, val); } static void @@ -33,7 +33,7 @@ typedef struct sprinter { */ void (*string)(struct sprinter *, const char *); void (*string_len)(struct sprinter *, const char *, size_t); - void (*integer)(struct sprinter *, int); + void (*integer)(struct sprinter *, int64_t); void (*boolean)(struct sprinter *, bool); void (*null)(struct sprinter *); diff --git a/test/T160-json.sh b/test/T160-json.sh index ec1b5adb..d975efa7 100755 --- a/test/T160-json.sh +++ b/test/T160-json.sh @@ -65,7 +65,6 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\", \"unread\"]}]" test_begin_subtest "Search message: json, 64-bit timestamp" -test_subtest_known_broken add_message "[subject]=\"json-search-64bit-timestamp-subject\"" "[date]=\"Tue, 01 Jan 2999 12:00:00 -0000\"" "[body]=\"json-search-64bit-timestamp-message\"" output=$(notmuch search --format=json "json-search-64bit-timestamp-message" | notmuch_search_sanitize) test_expect_equal_json "$output" "[{\"thread\": \"XXX\", |
