summaryrefslogtreecommitdiffstats
path: root/sys/boot/uboot/common
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2012-05-06 16:01:58 +0000
committerkientzle <kientzle@FreeBSD.org>2012-05-06 16:01:58 +0000
commit28b765c84794c6f87d8bff5ffad31d2b0001769c (patch)
tree39ed61d6386027195492bb8f3827ea01426ee98a /sys/boot/uboot/common
parentdfb886ebd021277a42ddc8b23893b59ca6ade3e7 (diff)
downloadFreeBSD-src-28b765c84794c6f87d8bff5ffad31d2b0001769c.zip
FreeBSD-src-28b765c84794c6f87d8bff5ffad31d2b0001769c.tar.gz
Don't call strcmp with a NULL pointer.
In particular, on the AM335x, which comes up with no memory mapped to low addresses, dereferencing the NULL causes a crash.
Diffstat (limited to 'sys/boot/uboot/common')
-rw-r--r--sys/boot/uboot/common/main.c11
-rw-r--r--sys/boot/uboot/common/metadata.c11
2 files changed, 18 insertions, 4 deletions
diff --git a/sys/boot/uboot/common/main.c b/sys/boot/uboot/common/main.c
index 7e961fd..9d7e9dc 100644
--- a/sys/boot/uboot/common/main.c
+++ b/sys/boot/uboot/common/main.c
@@ -116,6 +116,16 @@ meminfo(void)
}
}
+static uint64_t
+uboot_loadaddr(u_int type, void *data, uint64_t addr)
+{
+ printf("uboot_loadaddr: type=%d data=0x%x addr=0x%x\n",
+ type, data, addr);
+ if (type == 1)
+ return 0x40000000;
+ return (addr);
+}
+
int
main(void)
{
@@ -211,6 +221,7 @@ main(void)
archsw.arch_copyout = uboot_copyout;
archsw.arch_readin = uboot_readin;
archsw.arch_autoload = uboot_autoload;
+ archsw.arch_loadaddr = uboot_loadaddr;
interact(); /* doesn't return */
diff --git a/sys/boot/uboot/common/metadata.c b/sys/boot/uboot/common/metadata.c
index 7b6e1fc..ae20584 100644
--- a/sys/boot/uboot/common/metadata.c
+++ b/sys/boot/uboot/common/metadata.c
@@ -72,6 +72,7 @@ static int
md_getboothowto(char *kargs)
{
char *cp;
+ char *p;
int howto;
int active;
int i;
@@ -132,10 +133,12 @@ md_getboothowto(char *kargs)
if (getenv(howto_names[i].ev) != NULL)
howto |= howto_names[i].mask;
}
- if (!strcmp(getenv("console"), "comconsole"))
- howto |= RB_SERIAL;
- if (!strcmp(getenv("console"), "nullconsole"))
- howto |= RB_MUTE;
+ if ((p = getenv("console"))) {
+ if (!strcmp(p, "comconsole"))
+ howto |= RB_SERIAL;
+ if (!strcmp(p, "nullconsole"))
+ howto |= RB_MUTE;
+ }
return(howto);
}
OpenPOWER on IntegriCloud