svn commit: r226580 - stable/7/libexec/tftpd

Kostik Belousov kostikbel at gmail.com
Thu Oct 20 20:07:52 UTC 2011


On Thu, Oct 20, 2011 at 07:23:21PM +0000, Sean Bruno wrote:
> Author: sbruno
> Date: Thu Oct 20 19:23:21 2011
> New Revision: 226580
> URL: http://svn.freebsd.org/changeset/base/226580
> 
> Log:
>   MFC r224536:
>   Confirmed behavior of a Cisco 6509 in production.
>   
>   In the old TFTP server, there was an undocumented behavior where
>   the block counter would rollover to 0 if a file larger
>   than 65535 blocks was transferred.  With the default block size
>   of 512 octets per block, this is a file size of approximately 32 megabytes.
>   
>   The new TFTP server code would report an error and stop transferring
>   the file if a file was larger than 65535 blocks.
>   
>   This patch restores the old TFTP server's behavior to the new
>   TFTP server code.  If a TFTP client transfers a file larger
>   than 65535 blocks, and does *not* specify the "rollover" option,
>   then automatically rollover the block counter to 0 every time
>   we reach 65535 blocks.
>   
>   This restores interoperability with the FreeBSD 6 TFTP client.
>   Without this change, if a FreeBSD 6 TFTP client tried to
>   retrieve a file larger than 65535 blocks from a FreeBSD 9 TFTP server
>   , the transfer would fail.
>   The same file could be retrieved successfully if the same FreeBSD 6
>   TFTP client was used against a FreeBSD 6 TFTP server.
>   
>   Approved by:  re (kib)
It was not. It looks like people just think that 'Approved by: kib'
is some voodo that must be appended for no reason. Today it is second
time happened for the commit that I did not approved.

It does not matter much for the branch opened for the general commits.
Still, I would prefer that people do not falsely accuse me of wrongdoing :).

>   Tested by: Pawan Gupta <pawang at juniper dot net>,
>   Obtained from:  Juniper Networks
>   FreeBSD7 Reviewed by: Yahoo Inc.
>   
>   > Submitted by:  If someone else sent in the change.
>   > Reviewed by:   If someone else reviewed your modification.
>   > Approved by:   If you needed approval for this commit.
>   > Obtained from: If the change is from a third party.
>   > MFC after:     N [day[s]|week[s]|month[s]].  Request a reminder email.
>   > Security:      Vulnerability reference (one per line) or description.
>   > Empty fields above will be automatically removed.
>   
>   M    tftpd/tftp-transfer.c
> 
> Modified:
>   stable/7/libexec/tftpd/tftp-transfer.c
> 
> Modified: stable/7/libexec/tftpd/tftp-transfer.c
> ==============================================================================
> --- stable/7/libexec/tftpd/tftp-transfer.c	Thu Oct 20 19:16:52 2011	(r226579)
> +++ stable/7/libexec/tftpd/tftp-transfer.c	Thu Oct 20 19:23:21 2011	(r226580)
> @@ -129,14 +129,16 @@ tftp_send(int peer, uint16_t *block, str
>  		(*block)++;
>  		if (oldblock > *block) {
>  			if (options[OPT_ROLLOVER].o_request == NULL) {
> -				tftp_log(LOG_ERR,
> -				    "Block rollover but not allowed.");
> -				send_error(peer, EBADOP);
> -				gettimeofday(&(ts->tstop), NULL);
> -				return;
> +				/*
> +				 * "rollover" option not specified in
> +				 * tftp client.  Default to rolling block
> +				 * counter to 0.
> +				 */
> +				*block = 0;
> +			} else {
> +				*block = atoi(options[OPT_ROLLOVER].o_request);
>  			}
>  
> -			*block = atoi(options[OPT_ROLLOVER].o_request);
>  			ts->rollovers++;
>  		}
>  		gettimeofday(&(ts->tstop), NULL);
> @@ -196,14 +198,16 @@ tftp_receive(int peer, uint16_t *block, 
>  		(*block)++;
>  		if (oldblock > *block) {
>  			if (options[OPT_ROLLOVER].o_request == NULL) {
> -				tftp_log(LOG_ERR,
> -				    "Block rollover but not allowed.");
> -				send_error(peer, EBADOP);
> -				gettimeofday(&(ts->tstop), NULL);
> -				return;
> +				/*
> +				 * "rollover" option not specified in
> +				 * tftp client.  Default to rolling block
> +				 * counter to 0.
> +				 */
> +				*block = 0;
> +			} else {
> +				*block = atoi(options[OPT_ROLLOVER].o_request);
>  			}
>  
> -			*block = atoi(options[OPT_ROLLOVER].o_request);
>  			ts->rollovers++;
>  		}
>  
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-stable-7/attachments/20111020/ffccad7a/attachment.pgp


More information about the svn-src-stable-7 mailing list