--- /dev/null
+Index: src/ctrls.c
+===================================================================
+RCS file: /cvsroot/proftp/proftpd/src/ctrls.c,v
+retrieving revision 1.14
+diff -u -r1.14 ctrls.c
+--- src/ctrls.c 24 Oct 2006 16:13:31 -0000 1.14
++++ src/ctrls.c 8 Dec 2006 17:02:34 -0000
+@@ -534,11 +534,20 @@
+ return -1;
+ }
+
++ if (reqarglen >= sizeof(reqaction)) {
++ pr_signals_unblock();
++ errno = ENOMEM;
++ return -1;
++ }
++
++ memset(reqaction, '\0', sizeof(reqaction));
++
+ if (read(cl->cl_fd, reqaction, reqarglen) < 0) {
+ pr_signals_unblock();
+ return -1;
+ }
+
++ reqaction[sizeof(reqaction)-1] = '\0';
+ nreqargs--;
+
+ /* Find a matching action object, and use it to populate a ctrl object,
+@@ -657,17 +666,16 @@
+ return -1;
+ }
+
+- memset(response, '\0', sizeof(response));
+-
+ /* Make sure resparglen is not too big */
+- if (resparglen > sizeof(response)) {
++ if (resparglen >= sizeof(response)) {
+ pr_signals_unblock();
+ errno = ENOMEM;
+ return -1;
+ }
+
+- bread = read(ctrls_sockfd, response, resparglen);
++ memset(response, '\0', sizeof(response));
+
++ bread = read(ctrls_sockfd, response, resparglen);
+ while (bread != resparglen) {
+ if (bread < 0) {
+ pr_signals_unblock();
Patch4: %{name}-configure.patch
Patch5: %{name}-pool.patch
Patch6: %{name}-CVE-2006-5815.patch
+Patch7: %{name}-ctrls-reqarglen.patch
URL: http://www.proftpd.org/
BuildRequires: autoconf
BuildRequires: automake
%patch4 -p1
%patch5 -p1
%patch6 -p1
+%patch7 -p0
cp -f /usr/share/automake/config.sub .