[PATCH v2 2/2] tftp: ignore trailing garbage in the request

Denys Vlasenko vda.linux at googlemail.com
Thu Sep 4 10:24:36 UTC 2014


On Wed, Sep 3, 2014 at 11:06 PM, Aaro Koskinen <aaro.koskinen at iki.fi> wrote:
> On Wed, Sep 03, 2014 at 06:36:36PM +0200, Denys Vlasenko wrote:
>> On Mon, Sep 1, 2014 at 10:24 PM, Aaro Koskinen <aaro.koskinen at iki.fi> wrote:
>> > The firmware in some HP PA-RISC boxes is always sending fixed
>> > 512-byte requests, and sometimes there is some garbage at the end
>> > which makes busybox to reject the request. Ignore any characters after
>> > the last NUL.
>>
>> How about this?
>
> As you pointed out, I missed the short read possibility, and by
> ignoring them that also made me to screw up my testing & analysis
> (should have checked with tcpdump) - the box is actually sending
> *516-byte* requests. :-(
>
> So following is still needed to current git to work with some PA-RISC:
>
> diff --git a/networking/tftp.c b/networking/tftp.c
> index 8e3b0a2..d9295c9 100644
> --- a/networking/tftp.c
> +++ b/networking/tftp.c
> @@ -118,7 +118,7 @@ struct globals {
>         uint8_t error_pkt[4 + 32];
>         struct passwd *pw;
>         /* used in tftpd_main(), a bit big for stack: */
> -       char block_buf[TFTP_BLKSIZE_DEFAULT];
> +       char block_buf[TFTP_BLKSIZE_DEFAULT + 4];
>         char block_buf_tail[1];
>  #if ENABLE_FEATURE_TFTP_PROGRESS_BAR
>         off_t pos;
> @@ -811,7 +811,7 @@ int tftpd_main(int argc UNUSED_PARAM, char **argv)
>         ) {
>                 goto err;
>         }
> -       /* Some HP PA-RISC firmware always sends fixed 512-byte requests,
> +       /* Some HP PA-RISC firmware always sends fixed 516-byte requests,
>          * with trailing garbage.
>          * Support that by not requiring NUL to be the last byte (see above).
>          * To make strXYZ() ops safe, force NUL termination:

Fixed in git, thanks!


More information about the busybox mailing list