← Commit list

4d93592a26

Daniel Stenberg
Daniel Stenberg
2025-10-22
SUCCESS Duration: 152s

Subject

ftp: reduce size of some struct fields

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/ftp.c+3 -1
@@ -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;
lib/ftp.h+9 -5
@@ -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 */