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 <matt.devillier@gmail.com>
Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-on: https://chromium-review.googlesource.com/182357
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Reviewed-on: http://review.coreboot.org/6003
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
Luigi Semenzato
2014-01-13 17:45:54 -08:00
committed by Patrick Georgi
parent f4d1f3a4d9
commit 562db3bb3f
5 changed files with 21 additions and 3 deletions

View File

@@ -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;
}