summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch61
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;
+ }