From 14f0ab1c5360a99f9ad9fffe12f7d3c1e4fb2d1c Mon Sep 17 00:00:00 2001 From: Benno Rice Date: Thu, 22 Nov 2001 05:08:35 +0000 Subject: [PATCH] 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 --- libexec/tftpd/tftpd.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libexec/tftpd/tftpd.c b/libexec/tftpd/tftpd.c index 8b32f24780e5..02837d121989 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) {