diff options
Diffstat (limited to 'common/cmd_pxe.c')
| -rw-r--r-- | common/cmd_pxe.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 79d3a061f..db6b15698 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -25,6 +25,8 @@ const char *pxe_default_paths[] = {  	NULL  }; +static bool is_pxe; +  /*   * Like getenv, but prints an error if envvar isn't defined in the   * environment.  It always returns what getenv does, so it can be used in @@ -84,7 +86,8 @@ static int get_bootfile_path(const char *file_path, char *bootfile_path,  	char *bootfile, *last_slash;  	size_t path_len = 0; -	if (file_path[0] == '/') +	/* Only syslinux allows absolute paths */ +	if (file_path[0] == '/' && !is_pxe)  		goto ret;  	bootfile = from_env("bootfile"); @@ -1472,6 +1475,8 @@ int do_pxe(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  	if (argc < 2)  		return CMD_RET_USAGE; +	is_pxe = true; +  	/* drop initial "pxe" arg */  	argc--;  	argv++; @@ -1504,6 +1509,8 @@ int do_sysboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  	char *filename;  	int prompt = 0; +	is_pxe = false; +  	if (strstr(argv[1], "-p")) {  		prompt = 1;  		argc--; |