1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
From 7372d154a41bc1c2b510c6dfb3ab67099e3a90a7 Mon Sep 17 00:00:00 2001
From: Aki Tuomi <aki.tuomi@open-xchange.com>
Date: Thu, 13 Aug 2020 20:01:41 +0300
Subject: [PATCH] oauth2-jwt: Use int64_t instead time_t for portability
---
src/lib-oauth2/oauth2-jwt.c | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/src/lib-oauth2/oauth2-jwt.c b/src/lib-oauth2/oauth2-jwt.c
index 83b241c558..09d3970743 100644
--- a/src/lib-oauth2/oauth2-jwt.c
+++ b/src/lib-oauth2/oauth2-jwt.c
@@ -30,19 +30,26 @@ static const char *get_field(const struct json_tree *tree, const char *key)
return json_tree_get_value_str(value_node);
}
-static int
-get_time_field(const struct json_tree *tree, const char *key, long *value_r)
+static int get_time_field(const struct json_tree *tree, const char *key,
+ int64_t *value_r)
{
+ time_t tvalue;
const char *value = get_field(tree, key);
int tz_offset ATTR_UNUSED;
if (value == NULL)
return 0;
- if ((str_to_long(value, value_r) < 0 &&
- !iso8601_date_parse((const unsigned char*)value, strlen(value),
- value_r, &tz_offset)) ||
- *value_r < 0)
- return -1;
- return 1;
+ if (str_to_int64(value, value_r) == 0) {
+ if (*value_r < 0)
+ return -1;
+ return 1;
+ } else if (iso8601_date_parse((const unsigned char*)value, strlen(value),
+ &tvalue, &tz_offset)) {
+ if (tvalue < 0)
+ return -1;
+ *value_r = tvalue;
+ return 1;
+ }
+ return -1;
}
static int
@@ -311,9 +318,9 @@ oauth2_jwt_body_process(const struct oauth2_settings *set, const char *alg,
const char *sub = get_field(tree, "sub");
int ret;
- long t0 = time(NULL);
+ int64_t t0 = time(NULL);
/* default IAT and NBF to now */
- long iat, nbf, exp;
+ int64_t iat, nbf, exp;
int tz_offset ATTR_UNUSED;
if (sub == NULL) {
--
2.20.1
|