nvramtool: Consider a string with non-printable characters a "bad value".
Otherwise nvramtool -a with random cmos contents can mess up your terminal. Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Patrick Georgi <patrick.georgi@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5015 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
12ee934cb3
commit
42944c3989
|
@ -672,6 +672,7 @@ static int list_cmos_entry(const cmos_entry_t * e, int show_name)
|
|||
{
|
||||
const cmos_enum_t *p;
|
||||
unsigned long long value;
|
||||
char *w;
|
||||
|
||||
/* sanity check CMOS entry */
|
||||
switch (prepare_cmos_read(e)) {
|
||||
|
@ -741,11 +742,26 @@ static int list_cmos_entry(const cmos_entry_t * e, int show_name)
|
|||
break;
|
||||
|
||||
case CMOS_ENTRY_STRING:
|
||||
if (show_name)
|
||||
printf("%s = %s\n", e->name,
|
||||
(char *)(unsigned long)value);
|
||||
else
|
||||
printf("%s\n", (char *)(unsigned long)value);
|
||||
w = (char *)(unsigned long)value;
|
||||
while (*w) {
|
||||
if(!isprint(*w)) {
|
||||
if (show_name)
|
||||
printf("# Bad value -> %s\n", e->name);
|
||||
else
|
||||
printf("Bad value\n");
|
||||
break;
|
||||
}
|
||||
w++;
|
||||
}
|
||||
|
||||
if (!*w) {
|
||||
|
||||
if (show_name)
|
||||
printf("%s = %s\n", e->name,
|
||||
(char *)(unsigned long)value);
|
||||
else
|
||||
printf("%s\n", (char *)(unsigned long)value);
|
||||
}
|
||||
|
||||
free((void *)(unsigned long)value);
|
||||
|
||||
|
|
Loading…
Reference in New Issue