From 6613abc26a853293c12f4e146a27606f02c8dd03 Mon Sep 17 00:00:00 2001 From: Andreas Henriksson Date: Mon, 28 May 2018 21:19:22 +0200 Subject: [PATCH] setmetamode: use unsigned int type for KDGKBMETA / KDSKBMETA alsauser@pragmasoft.com reported that he detected a stack smash and analyzed the problem as allocating too little space for the resulting put_user after calling ioctl KDGKBMETA. The ometa variable should be defined as unsigned int. While at it and for correctness, also nmeta and thus the val member of the struct meta where changed to unsigned int as it seems the kernel wants to take this type (but should be harmless to use char). Original bug report at https://bugs.debian.org/872623 --- src/setmetamode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/setmetamode.c b/src/setmetamode.c index 8d75b94..adec0e9 100644 --- a/src/setmetamode.c +++ b/src/setmetamode.c @@ -50,7 +50,7 @@ report(int meta) struct meta { char *name; - int val; + unsigned int val; } metas[] = { { "metabit", K_METABIT }, { "meta", K_METABIT }, @@ -64,7 +64,7 @@ struct meta { int main(int argc, char **argv) { - char ometa, nmeta; + unsigned int ometa, nmeta; struct meta *mp; set_progname(argv[0]); -- 2.21.0.windows.1