|
@@ -154,8 +154,10 @@ static int
|
|
|
netboot_common (proto_t proto, cmd_tbl_t *cmdtp, int argc, char *argv[])
|
|
|
{
|
|
|
char *s;
|
|
|
+ char *end;
|
|
|
int rcode = 0;
|
|
|
int size;
|
|
|
+ ulong addr;
|
|
|
|
|
|
/* pre-set load_addr */
|
|
|
if ((s = getenv("loadaddr")) != NULL) {
|
|
@@ -166,15 +168,17 @@ netboot_common (proto_t proto, cmd_tbl_t *cmdtp, int argc, char *argv[])
|
|
|
case 1:
|
|
|
break;
|
|
|
|
|
|
- case 2: /* only one arg - accept two forms:
|
|
|
- * just load address, or just boot file name.
|
|
|
- * The latter form must be written "filename" here.
|
|
|
+ case 2: /*
|
|
|
+ * Only one arg - accept two forms:
|
|
|
+ * Just load address, or just boot file name. The latter
|
|
|
+ * form must be written in a format which can not be
|
|
|
+ * mis-interpreted as a valid number.
|
|
|
*/
|
|
|
- if (argv[1][0] == '"') { /* just boot filename */
|
|
|
- copy_filename (BootFile, argv[1], sizeof(BootFile));
|
|
|
- } else { /* load address */
|
|
|
- load_addr = simple_strtoul(argv[1], NULL, 16);
|
|
|
- }
|
|
|
+ addr = simple_strtoul(argv[1], &end, 16);
|
|
|
+ if (end == (argv[1] + strlen(argv[1])))
|
|
|
+ load_addr = addr;
|
|
|
+ else
|
|
|
+ copy_filename(BootFile, argv[1], sizeof(BootFile));
|
|
|
break;
|
|
|
|
|
|
case 3: load_addr = simple_strtoul(argv[1], NULL, 16);
|