summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2015-12-29 21:29:05 +0000
committerian <ian@FreeBSD.org>2015-12-29 21:29:05 +0000
commitdb615833324a17b469dc05ddf53af4a41f2f3636 (patch)
tree62fc612ebf016bac9f27de95be3c10232f7c0914 /sys/boot
parentd5b4026ea636cfe11667663b94ad58f07a9698d3 (diff)
downloadFreeBSD-src-db615833324a17b469dc05ddf53af4a41f2f3636.zip
FreeBSD-src-db615833324a17b469dc05ddf53af4a41f2f3636.tar.gz
Fix the error checking for the ubenv command. This moves the check for an
empty ldvar (which amounts to the varname string starting with '=') into the if block that manipulates ldvar, which avoids later referencing ldvar when it was never initialized. Submitted by: Thomas Skibo Pointy hat: ian
Diffstat (limited to 'sys/boot')
-rw-r--r--sys/boot/uboot/common/main.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/boot/uboot/common/main.c b/sys/boot/uboot/common/main.c
index 3071426..6c7b893 100644
--- a/sys/boot/uboot/common/main.c
+++ b/sys/boot/uboot/common/main.c
@@ -585,6 +585,10 @@ handle_uboot_env_var(enum ubenv_action action, const char * var)
*/
if (action == UBENV_IMPORT) {
len = strcspn(var, "=");
+ if (len == 0) {
+ printf("name cannot start with '=': '%s'\n", var);
+ return;
+ }
if (var[len] == 0) {
strcpy(ldvar, "uboot.");
strncat(ldvar, var, sizeof(ldvar) - 7);
@@ -604,9 +608,11 @@ handle_uboot_env_var(enum ubenv_action action, const char * var)
var = &var[6];
}
- /* If ldvar is malformed or there's no variable name left, punt. */
- if (ldvar[0] == 0 || var[0] == 0)
+ /* If there is no variable name left, punt. */
+ if (var[0] == 0) {
+ printf("empty variable name\n");
return;
+ }
val = ub_env_get(var);
if (action == UBENV_SHOW) {
OpenPOWER on IntegriCloud