diff options
Diffstat (limited to 'net-ftp/proftpd/files/proftpd-1.3.5a-unbound-sftp-p2.patch')
-rw-r--r-- | net-ftp/proftpd/files/proftpd-1.3.5a-unbound-sftp-p2.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/net-ftp/proftpd/files/proftpd-1.3.5a-unbound-sftp-p2.patch b/net-ftp/proftpd/files/proftpd-1.3.5a-unbound-sftp-p2.patch new file mode 100644 index 000000000000..c7d0a02639a3 --- /dev/null +++ b/net-ftp/proftpd/files/proftpd-1.3.5a-unbound-sftp-p2.patch @@ -0,0 +1,61 @@ +commit f30ac3cc1a58ec7522de6aeeaa09314a45dbc690 +Author: TJ Saunders <tj@castaglia.org> +Date: Sat Nov 28 17:13:55 2015 -0800 + + Correct the parameters to talk of "extended attributes", not SFTP extensions. + +diff --git a/contrib/mod_sftp/fxp.c b/contrib/mod_sftp/fxp.c +index 03c7eb5..e7161d5 100644 +--- a/contrib/mod_sftp/fxp.c ++++ b/contrib/mod_sftp/fxp.c +@@ -235,15 +235,18 @@ static size_t fxp_packet_data_allocsz = 0; + #define FXP_PACKET_DATA_DEFAULT_SZ (1024 * 16) + #define FXP_RESPONSE_DATA_DEFAULT_SZ 512 + ++#define FXP_MAX_PACKET_LEN (1024 * 512) ++#define FXP_MAX_EXTENDED_ATTRIBUTES 100 ++ ++/* Maximum length of SFTP extended attribute name OR value. */ ++#define FXP_MAX_EXTENDED_ATTR_LEN 1024 ++ + struct fxp_extpair { + char *ext_name; + uint32_t ext_datalen; + unsigned char *ext_data; + }; + +-/* Maximum length of SFTP extension name, AND of the extension value. */ +-#define SFTP_EXT_MAX_LEN 1024 +- + static pool *fxp_pool = NULL; + static int fxp_use_gmt = TRUE; + +@@ -1243,10 +1246,10 @@ static struct fxp_extpair *fxp_msg_read_extpair(pool *p, unsigned char **buf, + SFTP_DISCONNECT_CONN(SFTP_SSH2_DISCONNECT_BY_APPLICATION, NULL); + } + +- if (namelen > SFTP_EXT_MAX_LEN) { ++ if (namelen > FXP_MAX_EXTENDED_ATTR_LEN) { + (void) pr_log_writefile(sftp_logfd, MOD_SFTP_VERSION, +- "received too-long SFTP extension name (%lu > max %lu), ignoring", +- (unsigned long) namelen, (unsigned long) SFTP_EXT_MAX_LEN); ++ "received too-long extended attribute name (%lu > max %lu), ignoring", ++ (unsigned long) namelen, (unsigned long) FXP_MAX_EXTENDED_ATTR_LEN); + errno = EINVAL; + return NULL; + } +@@ -1259,10 +1262,11 @@ static struct fxp_extpair *fxp_msg_read_extpair(pool *p, unsigned char **buf, + + datalen = sftp_msg_read_int(p, buf, buflen); + if (datalen > 0) { +- if (datalen > SFTP_EXT_MAX_LEN) { ++ if (datalen > FXP_MAX_EXTENDED_ATTR_LEN) { + (void) pr_log_writefile(sftp_logfd, MOD_SFTP_VERSION, +- "received too-long SFTP extension '%s' data (%lu > max %lu), ignoring", +- name, (unsigned long) datalen, (unsigned long) SFTP_EXT_MAX_LEN); ++ "received too-long extended attribute '%s' value (%lu > max %lu), " ++ "ignoring", name, (unsigned long) datalen, ++ (unsigned long) FXP_MAX_EXTENDED_ATTR_LEN); + errno = EINVAL; + return NULL; + } |