mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
tftp warning fix.
At least on Fedora 32 with GCC 10.2.1, dnsmasq compilation emits warning: tftp.c: In function ‘tftp_request’: tftp.c:754:3: warning: ‘strcpy’ source argument is the same as destination [-Wrestrict] 754 | strcpy(daemon->namebuff, file); And indeed it is the same source always on line 477, sometimes also on 571 in tftp.c Attached patch fixes the warning and possible undefined behaviour on tftp error.
This commit is contained in:
committed by
Simon Kelley
parent
4c30e9602b
commit
484bd75ce4
@@ -22,7 +22,7 @@ static void handle_tftp(time_t now, struct tftp_transfer *transfer, ssize_t len)
|
|||||||
static struct tftp_file *check_tftp_fileperm(ssize_t *len, char *prefix);
|
static struct tftp_file *check_tftp_fileperm(ssize_t *len, char *prefix);
|
||||||
static void free_transfer(struct tftp_transfer *transfer);
|
static void free_transfer(struct tftp_transfer *transfer);
|
||||||
static ssize_t tftp_err(int err, char *packet, char *message, char *file);
|
static ssize_t tftp_err(int err, char *packet, char *message, char *file);
|
||||||
static ssize_t tftp_err_oops(char *packet, char *file);
|
static ssize_t tftp_err_oops(char *packet, const char *file);
|
||||||
static ssize_t get_block(char *packet, struct tftp_transfer *transfer);
|
static ssize_t get_block(char *packet, struct tftp_transfer *transfer);
|
||||||
static char *next(char **p, char *end);
|
static char *next(char **p, char *end);
|
||||||
static void sanitise(char *buf);
|
static void sanitise(char *buf);
|
||||||
@@ -748,10 +748,11 @@ static ssize_t tftp_err(int err, char *packet, char *message, char *file)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t tftp_err_oops(char *packet, char *file)
|
static ssize_t tftp_err_oops(char *packet, const char *file)
|
||||||
{
|
{
|
||||||
/* May have >1 refs to file, so potentially mangle a copy of the name */
|
/* May have >1 refs to file, so potentially mangle a copy of the name */
|
||||||
strcpy(daemon->namebuff, file);
|
if (file != daemon->namebuff)
|
||||||
|
strcpy(daemon->namebuff, file);
|
||||||
return tftp_err(ERR_NOTDEF, packet, _("cannot read %s: %s"), daemon->namebuff);
|
return tftp_err(ERR_NOTDEF, packet, _("cannot read %s: %s"), daemon->namebuff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user