aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorThomas Huth <thuth@redhat.com>2017-06-28 13:46:25 +0200
committerAlexey Kardashevskiy <aik@ozlabs.ru>2017-06-30 15:30:32 +1000
commitc633b135c0dd0dc2c59f229c0d74974a5127c187 (patch)
tree14aa86bd41dd577d7a0156c28a06a002eda8120b /lib
parentd2d31be1b59ad65c72920428d4624d0fc18fae8e (diff)
downloadSLOF-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.c11
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;