From 562db3bb3fa16abf6f758e97f9e5496f1c14d423 Mon Sep 17 00:00:00 2001 From: Luigi Semenzato Date: Mon, 13 Jan 2014 17:45:54 -0800 Subject: libpayload: find source of input characters This change makes it possible for vboot to avoid an exploit that could cause involuntary switch to dev mode. It gives depthcharge/vboot some information on the type of input device that generated a key. BUG=chrome-os-partner:21729 TEST=manually tested for panther BRANCH=none CQ-DEPEND=CL:182420,CL:182241,CL:182946 Change-Id: I87bdac34bfc50f3adb0b35a2c57a8f95f4fbc35b Signed-off-by: Matt DeVillier Signed-off-by: Paul Menzel Reviewed-on: https://chromium-review.googlesource.com/182357 Reviewed-by: Luigi Semenzato Tested-by: Luigi Semenzato Commit-Queue: Luigi Semenzato Reviewed-on: http://review.coreboot.org/6003 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- payloads/libpayload/libc/console.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'payloads/libpayload/libc/console.c') diff --git a/payloads/libpayload/libc/console.c b/payloads/libpayload/libc/console.c index fce6de4fa0..54844db79b 100644 --- a/payloads/libpayload/libc/console.c +++ b/payloads/libpayload/libc/console.c @@ -33,6 +33,7 @@ struct console_output_driver *console_out; struct console_input_driver *console_in; +static console_input_type last_getchar_input_type; void console_add_output_driver(struct console_output_driver *out) { @@ -115,8 +116,10 @@ int getchar(void) #endif struct console_input_driver *in; for (in = console_in; in != 0; in = in->next) - if (in->havechar()) + if (in->havechar()) { + last_getchar_input_type = in->input_type; return in->getchar(); + } } } @@ -135,3 +138,8 @@ int getchar_timeout(int *ms) return 0; } + +console_input_type last_key_input_type(void) +{ + return last_getchar_input_type; +} -- cgit v1.2.3