mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
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.
This commit is contained in:
parent
e091427d98
commit
c17fca40e2
5 changed files with 10 additions and 8 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <talloc.h>
|
#include <talloc.h>
|
||||||
|
@ -124,11 +125,11 @@ json_string (struct sprinter *sp, const char *val)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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);
|
struct sprinter_json *spj = json_begin_value (sp);
|
||||||
|
|
||||||
fprintf (spj->stream, "%d", val);
|
fprintf (spj->stream, "%"PRId64, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
* Author: Peter Feigl <peter.feigl@gmx.at>
|
* Author: Peter Feigl <peter.feigl@gmx.at>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <talloc.h>
|
#include <talloc.h>
|
||||||
|
@ -161,11 +162,11 @@ sexp_keyword (struct sprinter *sp, const char *val)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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);
|
struct sprinter_sexp *sps = sexp_begin_value (sp);
|
||||||
|
|
||||||
fprintf (sps->stream, "%d", val);
|
fprintf (sps->stream, "%"PRId64, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <talloc.h>
|
#include <talloc.h>
|
||||||
|
@ -44,11 +45,11 @@ text_string (struct sprinter *sp, const char *val)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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;
|
struct sprinter_text *sptxt = (struct sprinter_text *) sp;
|
||||||
|
|
||||||
fprintf (sptxt->stream, "%d", val);
|
fprintf (sptxt->stream, "%"PRId64, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -33,7 +33,7 @@ typedef struct sprinter {
|
||||||
*/
|
*/
|
||||||
void (*string)(struct sprinter *, const char *);
|
void (*string)(struct sprinter *, const char *);
|
||||||
void (*string_len)(struct sprinter *, const char *, size_t);
|
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 (*boolean)(struct sprinter *, bool);
|
||||||
void (*null)(struct sprinter *);
|
void (*null)(struct sprinter *);
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,6 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
|
||||||
\"unread\"]}]"
|
\"unread\"]}]"
|
||||||
|
|
||||||
test_begin_subtest "Search message: json, 64-bit timestamp"
|
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\""
|
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)
|
output=$(notmuch search --format=json "json-search-64bit-timestamp-message" | notmuch_search_sanitize)
|
||||||
test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
|
test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
|
||||||
|
|
Loading…
Reference in a new issue