Hi Chintan!

On Wed, 2025-02-19 at 16:18 +0530, Chintan Vankar wrote:
> To append a string to a tftp pkt, "tftp_send()" API invokes "sprintf()"
> function which copies a string excluding a null character causing TFTP
> not-null terminated string error. Increase TFTP pkt string by 1 to avoid

Is this error visible somehow? How did you stop this problem?

> this error.
> 
> Signed-off-by: Chintan Vankar <c-van...@ti.com>
> ---
> 
> Link to v1:
> https://lore.kernel.org/r/20250107093840.2211381-2-c-van...@ti.com/
> 
> Changes from v1 to v2:
> -> Updated commit message.
> 
>  net/tftp.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/net/tftp.c b/net/tftp.c
> index fd9c9492929..420ea9ecf6c 100644
> --- a/net/tftp.c
> +++ b/net/tftp.c
> @@ -347,11 +347,11 @@ static void tftp_send(void)
>               pkt += strlen((char *)pkt) + 1;
>  #ifdef CONFIG_TFTP_TSIZE
>               pkt += sprintf((char *)pkt, "tsize%c%u%c",
> -                             0, net_boot_file_size, 0);
> +                             0, net_boot_file_size, 0) + 1;

But it does indeed produce \000 octets, because of %c with "0" argument, 
doesn't it? 

>  #endif
>               /* try for more effic. blk size */
>               pkt += sprintf((char *)pkt, "blksize%c%d%c",
> -                             0, tftp_block_size_option, 0);
> +                             0, tftp_block_size_option, 0) + 1;
>  
>               /* try for more effic. window size.
>                * Implemented only for tftp get.
> @@ -359,7 +359,7 @@ static void tftp_send(void)
>                */
>               if (tftp_state == STATE_SEND_RRQ && tftp_window_size_option > 1)
>                       pkt += sprintf((char *)pkt, "windowsize%c%d%c",
> -                                     0, tftp_window_size_option, 0);
> +                                     0, tftp_window_size_option, 0) + 1;
>               len = pkt - xp;
>               break;

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

Reply via email to