diff options
author | Thomas Huth <thuth@redhat.com> | 2017-06-28 13:46:25 +0200 |
---|---|---|
committer | Alexey Kardashevskiy <aik@ozlabs.ru> | 2017-06-30 15:30:32 +1000 |
commit | c633b135c0dd0dc2c59f229c0d74974a5127c187 (patch) | |
tree | 14aa86bd41dd577d7a0156c28a06a002eda8120b /lib | |
parent | d2d31be1b59ad65c72920428d4624d0fc18fae8e (diff) | |
download | SLOF-c633b135c0dd0dc2c59f229c0d74974a5127c187.zip SLOF-c633b135c0dd0dc2c59f229c0d74974a5127c187.tar.gz SLOF-c633b135c0dd0dc2c59f229c0d74974a5127c187.tar.bz2 |
libnet/tftp: Allow loading to address 0
It's theoretically possible to load a file to address 0, too, so
we should use a different marker than NULL to check for a valid
buffer.
Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libnet/tftp.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/libnet/tftp.c b/lib/libnet/tftp.c index d0c2f13..ab63578 100644 --- a/lib/libnet/tftp.c +++ b/lib/libnet/tftp.c @@ -26,6 +26,7 @@ #define MAX_BLOCKSIZE 1428 #define BUFFER_LEN 256 +#define INVALID_BUFFER ((void *)-1L) #define ENOTFOUND 1 #define EACCESS 2 @@ -45,7 +46,7 @@ /* Local variables */ static unsigned char packet[BUFFER_LEN]; -static unsigned char *buffer = NULL; +static unsigned char *buffer = INVALID_BUFFER; static unsigned short block; static unsigned short blocksize; static char blocksize_str[6]; /* Blocksize string for read request */ @@ -337,7 +338,7 @@ int32_t handle_tftp(int fd, uint8_t *pkt, int32_t packetsize) struct tftphdr *tftp; /* buffer is only set if we are handling TFTP */ - if (buffer == NULL ) + if (buffer == INVALID_BUFFER) return 0; #ifndef __DEBUG__ @@ -536,7 +537,7 @@ int tftp(filename_ip_t * _fn_ip, unsigned char *_buffer, int _len, printf(" Receiving data: "); print_progress(-1, 0); - // Setting buffer to a non-zero address enabled handling of received TFTP packets. + /* Set buffer to a valid address, enables handling of received packets */ buffer = _buffer; set_timer(TICKS_SEC); @@ -579,8 +580,8 @@ int tftp(filename_ip_t * _fn_ip, unsigned char *_buffer, int _len, } } - // Setting buffer to NULL disables handling of received TFTP packets. - buffer = NULL; + /* Setting buffer invalid to disable handling of received packets */ + buffer = INVALID_BUFFER; if (tftp_errno) return tftp_errno; |