aboutsummaryrefslogtreecommitdiffstats
path: root/main/kbd/0001-libkeymap-Fix-the-compatibility-with-the-busybox-s-l.patch
blob: 45508e3eee535959f9f0bb968f901e095776809f (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
From c994c7763b390d28ac92223eaa6176a136ad7b58 Mon Sep 17 00:00:00 2001
From: Alexey Gladkov <gladkov.alexey@gmail.com>
Date: Thu, 26 Sep 2019 11:24:48 +0200
Subject: [PATCH] libkeymap: Fix the compatibility with the busybox's loadkmap

Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
---
 src/libkeymap/dump.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/libkeymap/dump.c b/src/libkeymap/dump.c
index 83ac351..8531b5a 100644
--- a/src/libkeymap/dump.c
+++ b/src/libkeymap/dump.c
@@ -72,9 +72,14 @@ int lk_dump_bkeymap(struct lk_ctx *ctx, FILE *fd)
 			continue;
 
 		for (j = 0; j < NR_KEYS / 2; j++) {
-			int v = lk_get_key(ctx, i, j);
+			int value = lk_get_key(ctx, i, j);
 
-			if (fwrite(&v, sizeof(v), 1, fd) != 1)
+			if (value < 0 || value > USHRT_MAX) {
+				ERR(ctx, _("can not bind key %d to value %d because it is too large"), j, value);
+				goto fail;
+			}
+
+			if (fwrite(&value, sizeof(unsigned short), 1, fd) != 1)
 				goto fail;
 		}
 	}