summaryrefslogtreecommitdiff
path: root/x11-libs/tslib/files/tslib-1.23-fix-64bit-time_t-printf-ub.patch
blob: 392d56e4f4180b6743ef025b137757ca288dccb0 (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
Source:
  [PATCH 1/2]: git master
  [PATCH 2/2]: https://github.com/libts/tslib/pull/229

From acc471e96693b3f772b42687c5378591f0ed54ae Mon Sep 17 00:00:00 2001
From: steini2001 <179123067+steini2001@users.noreply.github.com>
Date: Tue, 12 Nov 2024 14:25:15 +0100
Subject: [PATCH 1/2] Fix build on 32bit arches with 64bit time_t and debug
 enabled

commit a7a39a6 forgot this one
---
 plugins/input-raw.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/input-raw.c b/plugins/input-raw.c
index 0e8a22f..da22720 100644
--- a/plugins/input-raw.c
+++ b/plugins/input-raw.c
@@ -650,8 +650,8 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
 		#ifdef DEBUG
 			printf("INPUT-RAW: read type %d  code %3d  value %4d  time %ld.%ld\n",
 			       i->ev[it].type, i->ev[it].code,
-			       i->ev[it].value, (long)i->ev[it].time.tv_sec,
-			       (long)i->ev[it].time.tv_usec);
+			       i->ev[it].value, (long)i->ev[it].input_event_sec,
+			       (long)i->ev[it].input_event_usec);
 		#endif
 			switch (i->ev[it].type) {
 			case EV_KEY:
-- 
2.51.0


From 32cf8d1b9e38b5eada97b00c73999af48be2d1cb Mon Sep 17 00:00:00 2001
From: steini2001 <179123067+steini2001@users.noreply.github.com>
Date: Tue, 12 Nov 2024 15:02:31 +0100
Subject: [PATCH 2/2] fix printf with 64bit time_t

Printing long long with %ld is UB. Converting long long to long could overflow.
To be compatible with 32bit time_t we need an explicit cast to long long.
---
 README.md                 |  6 +++---
 plugins/input-evdev-raw.c | 14 +++++++-------
 plugins/input-raw.c       | 12 ++++++------
 tests/ts_print.c          |  2 +-
 tests/ts_print_mt.c       |  6 +++---
 tests/ts_print_raw.c      |  2 +-
 tests/ts_test.c           |  2 +-
 tests/ts_test_mt_sdl.c    |  6 +++---
 8 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/README.md b/README.md
index aaec82d..1d781b8 100644
--- a/README.md
+++ b/README.md
@@ -585,9 +585,9 @@ This is a complete example program, similar to `ts_print_mt.c`:
 					continue;
 			#endif
 
-				printf("%ld.%06ld: (slot %d) %6d %6d %6d\n",
-				       samp_mt[j][i].tv.tv_sec,
-				       samp_mt[j][i].tv.tv_usec,
+				printf("%lld.%06lld: (slot %d) %6d %6d %6d\n",
+				       (long long)samp_mt[j][i].tv.tv_sec,
+				       (long long)samp_mt[j][i].tv.tv_usec,
 				       samp_mt[j][i].slot,
 				       samp_mt[j][i].x,
 				       samp_mt[j][i].y,
diff --git a/plugins/input-evdev-raw.c b/plugins/input-evdev-raw.c
index d187645..24208cf 100644
--- a/plugins/input-evdev-raw.c
+++ b/plugins/input-evdev-raw.c
@@ -461,11 +461,11 @@ static int ts_input_read(struct tslib_module_info *inf,
 				samp->tv = ev.time;
 		#ifdef DEBUG
 			fprintf(stderr,
-				"RAW nr %d ---------------------> %d %d %d %ld.%ld\n",
+				"RAW nr %d ---------------------> %d %d %d %lld.%06lld\n",
 				total,
 				samp->x, samp->y, samp->pressure,
-				(long)samp->tv.tv_sec,
-				(long)samp->tv.tv_usec);
+				(long long)samp->tv.tv_sec,
+				(long long)samp->tv.tv_usec);
 		#endif /* DEBUG */
 				samp++;
 				total++;
@@ -651,11 +651,11 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
 		}
 
 	#ifdef DEBUG
-		printf("INPUT-RAW nr %d: read type %d  code %3d  value %4d  time %ld.%ld\n",
+		printf("INPUT-RAW nr %d: read type %d  code %3d  value %4d  time %lld.%06lld\n",
 		       total,
-		       ev.type, ev.code,
-		       ev.value, (long)ev.time.tv_sec,
-		       (long)ev.time.tv_usec);
+		       ev.type, ev.code, ev.value,
+		       (long long)ev.time.tv_sec,
+		       (long long)ev.time.tv_usec);
 	#endif
 		switch (ev.type) {
 		case EV_KEY:
diff --git a/plugins/input-raw.c b/plugins/input-raw.c
index da22720..ae0cad6 100644
--- a/plugins/input-raw.c
+++ b/plugins/input-raw.c
@@ -393,10 +393,10 @@ static int ts_input_read(struct tslib_module_info *inf,
 					samp->tv.tv_usec = ev.input_event_usec;
 			#ifdef DEBUG
 				fprintf(stderr,
-					"RAW---------------------> %d %d %d %ld.%ld\n",
+					"RAW---------------------> %d %d %d %lld.%06lld\n",
 					samp->x, samp->y, samp->pressure,
-					(long)samp->tv.tv_sec,
-					(long)samp->tv.tv_usec);
+					(long long)samp->tv.tv_sec,
+					(long long)samp->tv.tv_usec);
 			#endif /* DEBUG */
 					samp++;
 					total++;
@@ -648,10 +648,10 @@ static int ts_input_read_mt(struct tslib_module_info *inf,
 
 		for (it = 0; it < rd / sizeof(struct input_event); it++) {
 		#ifdef DEBUG
-			printf("INPUT-RAW: read type %d  code %3d  value %4d  time %ld.%ld\n",
+			printf("INPUT-RAW: read type %d  code %3d  value %4d  time %lld.%06lld\n",
 			       i->ev[it].type, i->ev[it].code,
-			       i->ev[it].value, (long)i->ev[it].input_event_sec,
-			       (long)i->ev[it].input_event_usec);
+			       i->ev[it].value, (long long)i->ev[it].input_event_sec,
+			       (long long)i->ev[it].input_event_usec);
 		#endif
 			switch (i->ev[it].type) {
 			case EV_KEY:
diff --git a/tests/ts_print.c b/tests/ts_print.c
index e9e6c4f..406a087 100644
--- a/tests/ts_print.c
+++ b/tests/ts_print.c
@@ -106,7 +106,7 @@ int main(int argc, char **argv)
 		if (ret != 1)
 			continue;
 
-		printf("%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec, samp.x, samp.y, samp.pressure);
+		printf("%lld.%06lld: %6d %6d %6d\n", (long long)samp.tv.tv_sec, (long long)samp.tv.tv_usec, samp.x, samp.y, samp.pressure);
 
 	}
 
diff --git a/tests/ts_print_mt.c b/tests/ts_print_mt.c
index 6f18c67..5779ca2 100644
--- a/tests/ts_print_mt.c
+++ b/tests/ts_print_mt.c
@@ -254,10 +254,10 @@ int main(int argc, char **argv)
 				if (!(samp_mt[j][i].valid & TSLIB_MT_VALID))
 					continue;
 
-				printf(YELLOW "sample %d - %ld.%06ld -" RESET " (slot %d) %6d %6d %6d\n",
+				printf(YELLOW "sample %d - %lld.%06lld -" RESET " (slot %d) %6d %6d %6d\n",
 				       j,
-				       samp_mt[j][i].tv.tv_sec,
-				       samp_mt[j][i].tv.tv_usec,
+				       (long long)samp_mt[j][i].tv.tv_sec,
+				       (long long)samp_mt[j][i].tv.tv_usec,
 				       samp_mt[j][i].slot,
 				       samp_mt[j][i].x,
 				       samp_mt[j][i].y,
diff --git a/tests/ts_print_raw.c b/tests/ts_print_raw.c
index b9e9466..a4dae3d 100644
--- a/tests/ts_print_raw.c
+++ b/tests/ts_print_raw.c
@@ -83,7 +83,7 @@ int main(int argc, char **argv)
 		if (ret != 1)
 			continue;
 
-		printf("%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec, samp.x, samp.y, samp.pressure);
+		printf("%lld.%06lld: %6d %6d %6d\n", (long long)samp.tv.tv_sec, (long long)samp.tv.tv_usec, samp.x, samp.y, samp.pressure);
 
 	}
 
diff --git a/tests/ts_test.c b/tests/ts_test.c
index c9ced73..4d6a5ca 100644
--- a/tests/ts_test.c
+++ b/tests/ts_test.c
@@ -202,7 +202,7 @@ int main(int argc, char **argv)
 					quit_pressed = 1;
 				}
 
-		printf("%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec,
+		printf("%lld.%06lld: %6d %6d %6d\n", (long long)samp.tv.tv_sec, (long long)samp.tv.tv_usec,
 			samp.x, samp.y, samp.pressure);
 
 		if (samp.pressure > 0) {
diff --git a/tests/ts_test_mt_sdl.c b/tests/ts_test_mt_sdl.c
index 556c949..bc4808a 100644
--- a/tests/ts_test_mt_sdl.c
+++ b/tests/ts_test_mt_sdl.c
@@ -200,9 +200,9 @@ int main(int argc, char **argv)
 				       samp_mt[0][i].x, samp_mt[0][i].y);
 
 			if (verbose) {
-				printf("%ld.%06ld: (slot %d) %6d %6d %6d\n",
-					samp_mt[0][i].tv.tv_sec,
-					samp_mt[0][i].tv.tv_usec,
+				printf("%lld.%06lld: (slot %d) %6d %6d %6d\n",
+					(long long)samp_mt[0][i].tv.tv_sec,
+					(long long)samp_mt[0][i].tv.tv_usec,
 					samp_mt[0][i].slot,
 					samp_mt[0][i].x,
 					samp_mt[0][i].y,
-- 
2.51.0