From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Warren Date: Wed, 16 Jan 2008 15:27:50 -0500 Subject: [U-Boot-Users] [PATCH] TFTP: add host ip addr support In-Reply-To: <20080116173322.GF31365@game.jcrosoft.org> References: <1200094989-600-1-git-send-email-plagnioj@jcrosoft.com> <478D77C8.8050007@gmail.com> <20080116071939.GD31365@game.jcrosoft.org> <478E27A0.10606@gmail.com> <20080116173322.GF31365@game.jcrosoft.org> Message-ID: <478E68C6.8070309@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Jean-Christophe PLAGNIOL-VILLARD wrote: > On 10:49 Wed 16 Jan , Ben Warren wrote: > >> Jean-Christophe PLAGNIOL-VILLARD wrote: >> >>> On 22:19 Tue 15 Jan , Ben Warren wrote: >>> >>> >>>> Jean-Christophe PLAGNIOL-VILLARD wrote: >>>> >>>> >>>>> allow to use a different server as set in serverip >>>>> >>>>> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD >>>>> >>>>> diff --git a/common/cmd_net.c b/common/cmd_net.c >>>>> index 21682c0..b86ca86 100644 >>>>> --- a/common/cmd_net.c >>>>> +++ b/common/cmd_net.c >>>>> @@ -51,7 +51,7 @@ int do_tftpb (cmd_tbl_t *cmdtp, int flag, int argc, char >>>>> *argv[]) >>>>> U_BOOT_CMD( >>>>> tftpboot, 3, 1, do_tftpb, >>>>> "tftpboot- boot image via network using TFTP protocol\n", >>>>> - "[loadAddress] [bootfilename]\n" >>>>> + "[loadAddress] [[hostIPaddr:]bootfilename]\n" >>>>> ); >>>>> int do_rarpb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) >>>>> diff --git a/net/tftp.c b/net/tftp.c >>>>> index 8b95bcf..9d87e2c 100644 >>>>> --- a/net/tftp.c >>>>> +++ b/net/tftp.c >>>>> @@ -34,7 +34,7 @@ >>>>> #define TFTP_ERROR 5 >>>>> #define TFTP_OACK 6 >>>>> - >>>>> +static IPaddr_t TftpServerIP; >>>>> static int TftpServerPort; /* The UDP port at their end */ >>>>> static int TftpOurPort; /* The UDP port at our end */ >>>>> static int TftpTimeoutCount; >>>>> @@ -55,7 +55,7 @@ static int TftpState; >>>>> #define DEFAULT_NAME_LEN (8 + 4 + 1) >>>>> static char default_filename[DEFAULT_NAME_LEN]; >>>>> -static char *tftp_filename; >>>>> +static char tftp_filename[2048]; >>>>> >>>>> >>>>> >>>> A 2k filename??? How about something more reasonable like 80 or 100 bytes. >>>> Use a #define for the size so you can use it later. >>>> >>>> >>> I've chosed to use the same filename size as nfs. >>> >>> >> Then NFS uses too big a buffer. Please make this one smaller, use a >> #define and strncpy. >> >> > OK about the buffer size. > > But I diaagree about strncpy because you need to known the size of > the string and we know it only when we use the default_filename otherwise > we need to strlen and in this strcpy do every thing itself. > > strncpy copies AT MOST 'n' bytes. #define MAX_FILE_NAME_LEN 80 static char tftp_filename[MAX_FILE_NAME_LEN]; strncpy(tftp_filename, str, MAX_FILE_NAME_LEN); Standard buffer overrun protection. regards, Ben