diff options
author | iedowse <iedowse@FreeBSD.org> | 2003-06-16 20:48:56 +0000 |
---|---|---|
committer | iedowse <iedowse@FreeBSD.org> | 2003-06-16 20:48:56 +0000 |
commit | 1c34d301c1f016c4510c202d478e91fc0688e70f (patch) | |
tree | d70f18397a994ee34cca49455e4927a7feac8c46 /sys/boot | |
parent | bdcc4ca5e8e231237d03c8af56189b1dd2e80172 (diff) | |
download | FreeBSD-src-1c34d301c1f016c4510c202d478e91fc0688e70f.zip FreeBSD-src-1c34d301c1f016c4510c202d478e91fc0688e70f.tar.gz |
When looking for the ':' separator in the root path, don't go past
the terminating '\0'. Since the initialisation of rootpath in
libstand/bootp.c may copy junk into the rest of the buffer, it was
possible for the code to find a ':' after the '\0' and do the wrong
thing.
Reviewed by: ps
MFC after: 1 week
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/i386/libi386/pxe.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/boot/i386/libi386/pxe.c b/sys/boot/i386/libi386/pxe.c index 6e01a28..68081df 100644 --- a/sys/boot/i386/libi386/pxe.c +++ b/sys/boot/i386/libi386/pxe.c @@ -286,10 +286,10 @@ pxe_open(struct open_file *f, ...) if (!rootpath[1]) strcpy(rootpath, PXENFSROOTPATH); - for (i = 0; i < FNAME_SIZE; i++) + for (i = 0; rootpath[i] != '\0' && i < FNAME_SIZE; i++) if (rootpath[i] == ':') break; - if (i && i != FNAME_SIZE) { + if (i && i != FNAME_SIZE && rootpath[i] == ':') { rootpath[i++] = '\0'; if (inet_addr(&rootpath[0]) != INADDR_NONE) rootip.s_addr = inet_addr(&rootpath[0]); |