aboutsummaryrefslogtreecommitdiffstats
path: root/main/dovecot/0001-oauth2-jwt-Use-int64_t-instead-time_t-for-portabilit.patch
blob: 5c4ab58e7eab04786868d8e95cee4851846159f2 (plain)
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