ftp: reduce size of some struct fields

Closes #19191
This commit is contained in:
Daniel Stenberg 2025-10-22 13:22:21 +02:00
parent 61156f7921
commit 4d93592a26
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
2 changed files with 12 additions and 6 deletions

View file

@ -4169,6 +4169,8 @@ static size_t numof_slashes(const char *str)
return num;
}
#define FTP_MAX_DIR_DEPTH 1000
/***********************************************************************
*
* ftp_parse_url_path()
@ -4242,7 +4244,7 @@ CURLcode ftp_parse_url_path(struct Curl_easy *data,
/* number of entries to allocate for the 'dirs' array */
size_t dirAlloc = numof_slashes(rawPath);
if(dirAlloc >= 1000)
if(dirAlloc >= FTP_MAX_DIR_DEPTH)
/* suspiciously deep dir hierarchy */
return CURLE_URL_MALFORMAT;

View file

@ -141,14 +141,18 @@ struct ftp_conn {
curl_off_t known_filesize; /* file size is different from -1, if wildcard
LIST parsing was done and wc_statemach set
it */
int dirdepth; /* number of entries used in the 'dirs' array */
int cwdcount; /* number of CWD commands issued */
int count1; /* general purpose counter for the state machine */
int count2; /* general purpose counter for the state machine */
int count3; /* general purpose counter for the state machine */
ftpstate state; /* always use ftp.c:state() to change state! */
ftpstate state_saved; /* transfer type saved to be reloaded after data
connection is established */
unsigned short dirdepth; /* number of entries used in the 'dirs' array,
< FTP_MAX_DIR_DEPTH */
unsigned short cwdcount; /* number of CWD commands issued,
< FTP_MAX_DIR_DEPTH */
unsigned char state; /* (ftpstate enum) always use ftp.c:state() to change
state! */
unsigned char state_saved; /* (ftpstate enum) transfer type saved to be
reloaded after data connection is
established */
unsigned char use_ssl; /* if AUTH TLS is to be attempted etc, for FTP or
IMAP or POP3 or others! (type: curl_usessl)*/
unsigned char ccc; /* ccc level for this connection */