summaryrefslogtreecommitdiffstats
path: root/libexec/tftpd
diff options
context:
space:
mode:
authorbenno <benno@FreeBSD.org>2001-11-22 05:08:35 +0000
committerbenno <benno@FreeBSD.org>2001-11-22 05:08:35 +0000
commitd330713082e143f3167b00be95c3dddc65e649e3 (patch)
treecbb7850cfa3de1643b2ef72e860d1ffae516f8c0 /libexec/tftpd
parenta3c1c9fdb4ec0da65e5e02c396bbd5bb22a16c8b (diff)
downloadFreeBSD-src-d330713082e143f3167b00be95c3dddc65e649e3.zip
FreeBSD-src-d330713082e143f3167b00be95c3dddc65e649e3.tar.gz
Change the failure mode in option parsing to silently bailing out of option
negotiation rather than rejecting the request. Apple OpenFirmware 3.0f3 (the version in my iMac) adds trailing garbage to the end of an otherwise valid request. Without this change, the requests were rejected which prevented me from booting. Reviewed by: obrien
Diffstat (limited to 'libexec/tftpd')
-rw-r--r--libexec/tftpd/tftpd.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libexec/tftpd/tftpd.c b/libexec/tftpd/tftpd.c
index 8b32f24..02837d1 100644
--- a/libexec/tftpd/tftpd.c
+++ b/libexec/tftpd/tftpd.c
@@ -371,8 +371,14 @@ again:
while (++cp < buf + size) {
for (i = 2, ccp = cp; i > 0; ccp++) {
if (ccp >= buf + size) {
- nak(EBADOP);
- exit(1);
+ /*
+ * Don't reject the request, just stop trying
+ * to parse the option and get on with it.
+ * Some Apple OpenFirmware versions have
+ * trailing garbage on the end of otherwise
+ * valid requests.
+ */
+ goto option_fail;
} else if (*ccp == '\0')
i--;
}
@@ -387,6 +393,7 @@ again:
cp = ccp-1;
}
+option_fail:
if (options[OPT_TIMEOUT].o_request) {
int to = atoi(options[OPT_TIMEOUT].o_request);
if (to < 1 || to > 255) {
OpenPOWER on IntegriCloud