mirror of
https://github.com/curl/curl.git
synced 2025-04-12 16:20:35 +08:00
setopt: check CURLOPT_TFTP_BLKSIZE range on set
... instead of later when the transfer is about to happen. Closes #12374
This commit is contained in:
parent
84338c4de2
commit
49c413cce2
@ -50,6 +50,7 @@
|
||||
#include "multiif.h"
|
||||
#include "altsvc.h"
|
||||
#include "hsts.h"
|
||||
#include "tftp.h"
|
||||
|
||||
/* The last 3 #include files should be in this order */
|
||||
#include "curl_printf.h"
|
||||
@ -379,7 +380,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
|
||||
* TFTP option that specifies the block size to use for data transmission.
|
||||
*/
|
||||
arg = va_arg(param, long);
|
||||
if(arg < 0)
|
||||
if(arg > TFTP_BLKSIZE_MAX || arg < TFTP_BLKSIZE_MIN)
|
||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||
data->set.tftp_blksize = arg;
|
||||
break;
|
||||
|
@ -70,8 +70,6 @@
|
||||
|
||||
/* RFC2348 allows the block size to be negotiated */
|
||||
#define TFTP_BLKSIZE_DEFAULT 512
|
||||
#define TFTP_BLKSIZE_MIN 8
|
||||
#define TFTP_BLKSIZE_MAX 65464
|
||||
#define TFTP_OPTION_BLKSIZE "blksize"
|
||||
|
||||
/* from RFC2349: */
|
||||
@ -978,11 +976,9 @@ static CURLcode tftp_connect(struct Curl_easy *data, bool *done)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
|
||||
/* alloc pkt buffers based on specified blksize */
|
||||
if(data->set.tftp_blksize) {
|
||||
if(data->set.tftp_blksize)
|
||||
/* range checked when set */
|
||||
blksize = (int)data->set.tftp_blksize;
|
||||
if(blksize > TFTP_BLKSIZE_MAX || blksize < TFTP_BLKSIZE_MIN)
|
||||
return CURLE_TFTP_ILLEGAL;
|
||||
}
|
||||
|
||||
need_blksize = blksize;
|
||||
/* default size is the fallback when no OACK is received */
|
||||
|
@ -25,6 +25,9 @@
|
||||
***************************************************************************/
|
||||
#ifndef CURL_DISABLE_TFTP
|
||||
extern const struct Curl_handler Curl_handler_tftp;
|
||||
|
||||
#define TFTP_BLKSIZE_MIN 8
|
||||
#define TFTP_BLKSIZE_MAX 65464
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CURL_TFTP_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user