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;
|
const cmos_enum_t *p;
|
||||||
unsigned long long value;
|
unsigned long long value;
|
||||||
|
char *w;
|
||||||
|
|
||||||
/* sanity check CMOS entry */
|
/* sanity check CMOS entry */
|
||||||
switch (prepare_cmos_read(e)) {
|
switch (prepare_cmos_read(e)) {
|
||||||
|
@ -741,11 +742,26 @@ static int list_cmos_entry(const cmos_entry_t * e, int show_name)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMOS_ENTRY_STRING:
|
case CMOS_ENTRY_STRING:
|
||||||
if (show_name)
|
w = (char *)(unsigned long)value;
|
||||||
printf("%s = %s\n", e->name,
|
while (*w) {
|
||||||
(char *)(unsigned long)value);
|
if(!isprint(*w)) {
|
||||||
else
|
if (show_name)
|
||||||
printf("%s\n", (char *)(unsigned long)value);
|
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);
|
free((void *)(unsigned long)value);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue