From nobody@FreeBSD.org  Wed Jul 11 16:37:43 2007
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id AA48716A41F
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 11 Jul 2007 16:37:43 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [69.147.83.33])
	by mx1.freebsd.org (Postfix) with ESMTP id 9AF0E13C44B
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 11 Jul 2007 16:37:43 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.13.1/8.13.1) with ESMTP id l6BGbhF7057734
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 11 Jul 2007 16:37:43 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.13.1/8.13.1/Submit) id l6BGbhev057733;
	Wed, 11 Jul 2007 16:37:43 GMT
	(envelope-from nobody)
Message-Id: <200707111637.l6BGbhev057733@www.freebsd.org>
Date: Wed, 11 Jul 2007 16:37:43 GMT
From: Oleg Gawriloff <barzog@telecom.by>
To: freebsd-gnats-submit@FreeBSD.org
Subject: proftpd with mod_codeconv compiled hangs with signal 11 when encounters client command OPTS utf8 on 
X-Send-Pr-Version: www-3.0

>Number:         114502
>Category:       ports
>Synopsis:       proftpd with mod_codeconv compiled hangs with signal 11 when encounters client command OPTS utf8 on
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    beech
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 11 16:40:06 GMT 2007
>Closed-Date:    Wed Jul 18 19:40:30 GMT 2007
>Last-Modified:  Wed Aug  6 14:30:09 UTC 2008
>Originator:     Oleg Gawriloff
>Release:        6.2
>Organization:
Atlant Telecom
>Environment:
FreeBSD stork.telecom.by 6.2-STABLE FreeBSD 6.2-STABLE #1: Tue Jul 10 17:08:33 EEST 2007     root@stork2.telecom.by:/usr/obj/usr/src/sys/STORK  amd64

>Description:
When proftpd running with -nd 10 encounters client command OPTS utf8 on it exits with signal 11.
---debug log
localhost.telecom.by (192.168.8.5[192.168.8.5]) - dispatching PRE_CMD command 'OPTS utf8 on' to mod_core
localhost.telecom.by (192.168.8.5[192.168.8.5]) - dispatching CMD command 'OPTS utf8 on' to mod_core
localhost.telecom.by (192.168.8.5[192.168.8.5]) - dispatching PRE_CMD command 'OPTS_UTF8 on' to mod_codeconv
localhost.telecom.by (192.168.8.5[192.168.8.5]) - ProFTPD terminating (signal 11)
localhost.telecom.by (192.168.8.5[192.168.8.5]) - FTP session closed.
----

barzog@stork:~$proftpd -vv
 - ProFTPD Version: 1.3.1rc3 (devel)
 -   Scoreboard Version: 01040002
 -   Built: Wed Jul 11 19:03:06 EEST 2007
 -     Module: mod_core.c
 -     Module: mod_xfer.c
 -     Module: mod_auth_unix.c
 -     Module: mod_auth_file/0.8.3
 -     Module: mod_auth.c
 -     Module: mod_ls.c
 -     Module: mod_log.c
 -     Module: mod_site.c
 -     Module: mod_delay/0.6
 -     Module: mod_auth_pam/1.0.1
 -     Module: mod_wrap2/2.0.5
 -     Module: mod_wrap2_file/1.1
 -     Module: mod_codeconv.c

ServerName                      "Atlant-Telecom Media FTP Server"
ServerAdmin                     webmaster@telecom.by
ServerType                      standalone
DefaultServer                   on
Port                            21
Umask                           002
MaxInstances                    300
MaxClients              300     "Sorry, the maximum number of allowed users are already connected:(%m)"
MaxClientsPerHost       5       "Sorry, you may not connect more than five times."
MaxLoginAttempts        3
User                            nobody
Group                           nogroup
PidFile                         /var/run/proftpd.pid

CharsetLocal    KOI8-R
CharsetRemote   CP1251
TimeoutLogin                    120
TimeoutIdle                     600
TimeoutNoTransfer               900
TimeoutStalled                  3600
UseReverseDNS                   off
IdentLookups                    off
ServerIdent                     on "FTP server ready."
AllowForeignAddress             off
AllowRetrieveRestart            on
AllowStoreRestart               on
HiddenStores                    off
PersistentPasswd                off
AuthPAM                         off
AuthPAMConfig                   ftpd
RequireValidShell               off
RootLogin                       off
UseFtpUsers                     off
ShowSymlinks                    off
DeferWelcome                    on
ListOptions                     "-a"
DelayTable                      /var/log/proftp/proftpd.delay
LogFormat                       default "%h %l %u %t \"%r\" %s %b"
LogFormat                       auth    "%v [%P] %h %t \"%r\" %s"
LogFormat                       write   "%h %l %u %t \"%r\" %s %b"
LogFormat                       awstats "%t     %h      %u      %m      %f      %s      %b"
TransferLog                     /var/log/proftp/xferlog
SystemLog                       /var/log/proftpd.log
ScoreboardFile                  /var/run/proftpd.scoreboard
PassivePorts                    49152 65534
DefaultRoot             ~       !wheel
WrapEngine                      on
WrapDenyMsg                     "User '%u' denied by access rules"
WrapTables                      file:/etc/hosts.allow.private file:/etc/hosts.deny

AllowOverwrite                on
DenyFilter \*.*/

<Limit SITE_CHMOD>
  DenyAll
</Limit>

<Anonymous /usr/home/Media>
 User media
 Group nogroup
 UserAlias anonymous media
 HideNoAccess                   on
</Anonymous>

>How-To-Repeat:

>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->beech 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Thu Jul 12 04:25:03 UTC 2007 
Responsible-Changed-Why:  
Over to maintainer. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114502 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/114502: commit references a PR
Date: Thu, 12 Jul 2007 07:19:18 +0000 (UTC)

 beech       2007-07-12 07:19:11 UTC
 
   FreeBSD ports repository
 
   Modified files:
     ftp/proftpd          Makefile 
     ftp/proftpd/files    extra-patch-mod-codeconv 
   Log:
   - Fix extra-patch-mod-codeconv
   - Bump portrevision
   
   PR:             ports/114502
   Reported by:    Oleg Gawriloff <barzog@telecom.by>
   Approved by:    sat (mentor)
   
   Revision  Changes    Path
   1.112     +2 -1      ports/ftp/proftpd/Makefile
   1.2       +4 -5      ports/ftp/proftpd/files/extra-patch-mod-codeconv
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: beech 
State-Changed-When: Thu Jul 12 07:25:55 UTC 2007 
State-Changed-Why:  
Fix committed, Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114502 
State-Changed-From-To: closed->open 
State-Changed-By: beech 
State-Changed-When: Thu Jul 12 09:48:18 UTC 2007 
State-Changed-Why:  
Problem still exists. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114502 
State-Changed-From-To: open->closed 
State-Changed-By: beech 
State-Changed-When: Wed Jul 18 19:38:07 UTC 2007 
State-Changed-Why:  
Patch reviewed upstream. Not compatible with 1.3.1rc3. Duplicates and  
conflicts with utf8 functionality. Original author does not respond. 
Option will be removed. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114502 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/114502: commit references a PR
Date: Wed, 18 Jul 2007 21:09:22 +0000 (UTC)

 beech       2007-07-18 21:09:14 UTC
 
   FreeBSD ports repository
 
   Modified files:
     ftp/proftpd          Makefile 
   Removed files:
     ftp/proftpd/files    extra-patch-mod-codeconv 
   Log:
   - Remove mod_codeconv
   - Patch reviewed upstream. Not compatible with 1.3.1rc3. Duplicates and
     conflicts with utf8 functionality
   
   PR:             ports/114502
   Approved by:    sat (mentor)
   
   Revision  Changes    Path
   1.114     +2 -12     ports/ftp/proftpd/Makefile
   1.3       +0 -425    ports/ftp/proftpd/files/extra-patch-mod-codeconv (dead)
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 

From: "Alexey V. Drozdov" <nyquist@ctam.tu-bryansk.ru>
To: bug-followup@FreeBSD.org, barzog@telecom.by
Cc:  
Subject: Re: ports/114502: proftpd with mod_codeconv compiled hangs with signal 11 when encounters client command OPTS utf8 on
Date: Mon, 24 Mar 2008 03:33:45 +0300

 Hello.
 
 I want to offer the updated patch for release of proftpd-1.3.1. (http://iip=
 o.tu-bryansk.ru/pub/common/proftpd-1.3.1.patch.diff)
 Solved problem with "signal 11"
 
 diff -r -u -P ./proftpd-1.3.1/modules/mod_codeconv.c ./proftpd-1.3.1_patche=
 d/modules/mod_codeconv.c
 --- ./proftpd-1.3.1/modules/mod_codeconv.c  1970-01-01 03:00:00.000000000 +=
 0300
 +++ ./proftpd-1.3.1_patched/modules/mod_codeconv.c  2008-03-24 02:55:39.000=
 000000 +0300
 @@ -0,0 +1,231 @@
 +/*
 + * ProFTPD: mod_codeconv -- local <-> remote charset conversion
 + *
 + * Copyright (c) 2004 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp> / All right=
 s reserved.
 + *
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation; either version 2 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, U=
 SA.
 + *
 + */
 +
 +
 +#include   "conf.h"
 +#include   <iconv.h>
 +
 +
 +//
 +// directive
 +//
 +#define    DIRECTIVE_CHARSETLOCAL      "CharsetLocal"
 +#define    DIRECTIVE_CHARSETREMOTE     "CharsetRemote"
 +
 +
 +//
 +// initialization
 +//
 +static int codeconv_init(void)
 +{
 +   return 0;
 +}
 +
 +static int codeconv_sess_init(void)
 +{
 +   return 0;
 +}
 +
 +
 +char* remote2local(struct pool* pool, char* remote)
 +{
 +   iconv_t ic;
 +   char*   local;
 +   char*   in_ptr;
 +   char*   out_ptr;
 +   size_t  inbytesleft, outbytesleft;
 +
 +   config_rec* conf_l =3D NULL;
 +   config_rec* conf_r =3D NULL;
 +
 +   conf_l =3D find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSET=
 LOCAL, FALSE);
 +   conf_r =3D find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSET=
 REMOTE, FALSE);
 +   if (!conf_l || !conf_r) return NULL;
 +
 +   ic =3D iconv_open(conf_l->argv[0], conf_r->argv[0]);
 +   if (ic =3D=3D (iconv_t)(-1)) return NULL;
 +
 +   iconv(ic, NULL, NULL, NULL, NULL);
 +
 +   inbytesleft =3D remote !=3D NULL ? strlen(remote) : 0;
 +   outbytesleft =3D inbytesleft*3;
 +   local =3D palloc(pool, outbytesleft+1);
 +
 +   in_ptr =3D remote;=20
 +   out_ptr =3D local;
 +   while (inbytesleft) {
 +       if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, &outbytesleft) =3D=
 =3D -1) {
 +           *out_ptr =3D '?'; out_ptr++; outbytesleft--;
 +           in_ptr++; inbytesleft--;
 +           break;
 +       }
 +   }
 +   *out_ptr =3D 0;
 +
 +   iconv_close(ic);
 +
 +   return local;
 +}
 +
 +
 +char* local2remote(char* local)
 +{
 +   iconv_t ic;
 +   char*   remote;
 +   char*   in_ptr;
 +   char*   out_ptr;
 +   size_t  inbytesleft, outbytesleft;
 +
 +   config_rec* conf_l =3D NULL;
 +   config_rec* conf_r =3D NULL;
 +
 +   conf_l =3D find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSET=
 LOCAL, FALSE);
 +   conf_r =3D find_config(main_server->conf, CONF_PARAM, DIRECTIVE_CHARSET=
 REMOTE, FALSE);
 +   if (!conf_l || !conf_r) return NULL;
 +
 +   ic =3D iconv_open(conf_r->argv[0], conf_l->argv[0]);
 +   if (ic =3D=3D (iconv_t)(-1)) return NULL;
 +
 +   iconv(ic, NULL, NULL, NULL, NULL);
 +
 +   inbytesleft =3D local !=3D NULL ? strlen(local) : 0;
 +   outbytesleft =3D inbytesleft*3;
 +   remote =3D malloc(outbytesleft+1);
 +
 +   in_ptr =3D local;=20
 +   out_ptr =3D remote;
 +   while (inbytesleft) {
 +       if (iconv(ic, &in_ptr, &inbytesleft, &out_ptr, &outbytesleft) =3D=
 =3D -1) {
 +           *out_ptr =3D '?'; out_ptr++; outbytesleft--;
 +           in_ptr++; inbytesleft--;
 +           break;
 +       }
 +   }
 +   *out_ptr =3D 0;
 +
 +   iconv_close(ic);
 +
 +   return remote;
 +}
 +
 +
 +//
 +// module handler
 +//
 +MODRET codeconv_pre_any(cmd_rec* cmd)
 +{
 +   char*   p;
 +   int     i;
 +
 +   p =3D remote2local(cmd->pool, cmd->arg);
 +   if (p) cmd->arg =3D p;
 +
 +   for (i =3D 0; i < cmd->argc; i++) {
 +       p =3D remote2local(cmd->pool, cmd->argv[i]);
 +       if (p) cmd->argv[i] =3D p;
 +   }
 +
 +   return DECLINED(cmd);
 +}
 +
 +
 +//
 +// local charset directive "CharsetLocal"
 +//
 +MODRET set_charsetlocal(cmd_rec *cmd) {
 +  config_rec *c =3D NULL;
 +
 +  /* Syntax: CharsetLocal iconv-charset-name */
 +
 +  CHECK_ARGS(cmd, 1);
 +  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
 +
 +  c =3D add_config_param_str(DIRECTIVE_CHARSETLOCAL, 1, cmd->argv[1]);
 +
 +  return HANDLED(cmd);
 +}
 +
 +//
 +// remote charset directive "CharsetRemote"
 +//
 +MODRET set_charsetremote(cmd_rec *cmd) {
 +  config_rec *c =3D NULL;
 +
 +  /* Syntax: CharsetRemote iconv-charset-name */
 +
 +  CHECK_ARGS(cmd, 1);
 +  CHECK_CONF(cmd, CONF_ROOT|CONF_VIRTUAL|CONF_GLOBAL);
 +
 +  c =3D add_config_param_str(DIRECTIVE_CHARSETREMOTE, 1, cmd->argv[1]);
 +
 +  return HANDLED(cmd);
 +}
 +
 +
 +//
 +// module =E2=94=9C=D0=9D=E2=94=9C=D0=A1 directive
 +//
 +static conftable codeconv_conftab[] =3D {
 +   { DIRECTIVE_CHARSETLOCAL,       set_charsetlocal,       NULL },
 +   { DIRECTIVE_CHARSETREMOTE,      set_charsetremote,      NULL },
 +   { NULL, NULL, NULL }
 +};
 +
 +
 +//
 +// trap =E2=94=AC=D0=B4=E2=94=AC=E2=95=A3=E2=94=AC=D0=B4=E2=94=9C=D0=BB=E2=
 =94=AC=D0=B5=E2=94=AC=E2=94=82=E2=94=AC=D0=B5=E2=94=9C=D0=AE=E2=94=AC=D0=B5=
 =E2=94=9C=E2=94=82=E2=94=AC=D0=B5=E2=94=9C=D0=99=E2=94=AC=E2=96=91=E2=94=9C=
 =D0=BC=E2=94=9C=D0=9D=E2=94=9C=E2=95=96
 +//
 +static cmdtable codeconv_cmdtab[] =3D {
 +   { PRE_CMD,      C_ANY,  G_NONE, codeconv_pre_any,   FALSE, FALSE },
 +   { 0,            NULL }
 +};
 +
 +
 +//
 +// module =E2=94=AC=E2=95=9B=E2=94=9C=E2=96=91=E2=94=9C=D0=9A=E2=94=9C=E2=
 =94=82
 +//
 +module codeconv_module =3D {
 +
 +   /* Always NULL */
 +   NULL, NULL,
 +
 +   /* Module API version (2.0) */
 +   0x20,
 +
 +   /* Module name */
 +   "codeconv",
 +
 +   /* Module configuration directive handlers */
 +   codeconv_conftab,
 +
 +   /* Module command handlers */
 +   codeconv_cmdtab,
 +
 +   /* Module authentication handlers (none in this case) */
 +   NULL,
 +
 +   /* Module initialization */
 +   codeconv_init,
 +
 +   /* Session initialization */
 +   codeconv_sess_init
 +
 +};
 diff -r -u -P ./proftpd-1.3.1/modules/mod_df.c ./proftpd-1.3.1_patched/modu=
 les/mod_df.c
 --- ./proftpd-1.3.1/modules/mod_df.c    1970-01-01 03:00:00.000000000 +0300
 +++ ./proftpd-1.3.1_patched/modules/mod_df.c    2008-03-24 02:55:39.0000000=
 00 +0300
 @@ -0,0 +1,127 @@
 +/*
 + * ProFTPD: mod_df -- =E2=94=AC=D0=B5=E2=94=9C=D0=97=E2=94=AC=D0=B5=E2=94=
 =AC=D0=B3=E2=94=AC=D0=B5=E2=94=AC=E2=95=A3=E2=94=AC=D0=B5=E2=94=AC=D0=BF=E2=
 =94=AC=E2=95=A2=E2=94=9C=E2=95=A1=E2=94=AC=D0=B4=E2=94=AC=D0=BD=E2=94=9C=D0=
 =9D=E2=94=9C=D0=96=E2=94=9C=D0=9E=E2=94=9C=D0=9C=E2=94=9C=D0=94=E2=94=9C=D0=
 =9C=E2=94=9C=D0=93=E2=94=9C=D0=9E=E2=94=AC=D0=B5=E2=94=9C=D0=B2=E2=94=AC=D0=
 =B5=E2=94=AC=E2=95=95=E2=94=AC=D0=B5=E2=94=9C=D0=B5=E2=94=AC=D0=B1=E2=94=AC=
 =E2=95=9D=E2=94=AC=D0=B5=E2=94=9C=D0=BB
 + *
 + * Copyright (c) 2002 by TSUJIKAWA Tohru <tsujikawa@tsg.ne.jp>
 + *
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation; either version 2 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, U=
 SA.
 + *
 + */
 +
 + /*
 +   **** for Linux only ****
 +
 +   CWD/CDUP =E2=94=AC=D0=B5=E2=94=AC=E2=94=82=E2=94=AC=D0=B5=E2=94=9C=D0=
 =AE=E2=94=AC=D0=B5=E2=94=9C=E2=94=82=E2=94=AC=D0=B5=E2=94=9C=D0=99=E2=94=AC=
 =D0=B4=E2=94=9C=D0=9E=E2=94=AC=D0=B5=E2=94=9C=D0=BA=E2=94=AC=D0=B5=E2=94=AC=
 =E2=95=A2=E2=94=AC=D0=B5=E2=94=9C=D0=BB=E2=94=AC=D0=B5=E2=94=9C=D0=98=E2=94=
 =AC=D0=B4=E2=94=9C=D0=97=E2=94=9C=D0=95=E2=94=9C=E2=95=A2=E2=94=AC=E2=94=82=
 =E2=94=AC=E2=95=91=E2=94=AC=D0=B5=E2=94=9C=D0=97=E2=94=AC=D0=B5=E2=94=AC=D0=
 =B3=E2=94=AC=D0=B5=E2=94=9C=D0=BC=E2=94=AC=D0=B5=E2=94=AC=D0=BF=E2=94=AC=D0=
 =B5=E2=94=9C=D0=98=E2=94=AC=D0=B5=E2=94=9C=D0=BA=E2=94=AC=D0=B4=E2=94=9C=D0=
 =97=E2=94=AC=D0=B4=E2=94=9C=D0=9E=E2=94=AC=D0=B5=E2=94=9C=D0=97=E2=94=AC=D0=
 =B5=E2=94=AC=D0=B3=E2=94=AC=D0=B5=E2=94=AC=E2=95=A3=E2=94=AC=D0=B5=E2=94=AC=
 =D0=BF=E2=94=AC=E2=95=A2=E2=94=9C=E2=95=A1=E2=94=AC=D0=B4=E2=94=AC=D0=BD=E2=
 =94=9C=D0=9D=E2=94=9C=D0=96=E2=94=9C=D0=9E=E2=94=9C=D0=9C=E2=94=AC=D0=B4=E2=
 =94=9C=E2=96=93=E2=94=9C=D0=94=E2=94=9C=D0=9C=E2=94=9C=D0=93=E2=94=9C=D0=9E=
 =E2=94=AC=D0=B4=E2=94=AC=E2=95=A3=E2=94=AC=D0=B4=E2=94=9C=D0=BB=E2=94=AC=D0=
 =B5=E2=94=9C=D0=B2=E2=94=AC=D0=B5=E2=94=AC=E2=95=95=E2=94=AC=D0=B5=E2=94=9C=
 =D0=B5=E2=94=AC=D0=B1=E2=94=AC=E2=95=9D=E2=94=AC=D0=B5=E2=94=9C=D0=BB=E2=94=
 =AC=D0=B4=E2=94=9C=D0=97=E2=94=AC=D0=B4=E2=94=AC=E2=95=A3=E2=94=AC=D0=B1=E2=
 =94=AC=D0=B3
 +
 +   statfs() =E2=94=AC=D0=B4=E2=94=9C=D0=9E=E2=94=AC=E2=95=97=E2=94=9C=D0=
 =95=E2=94=9C=D0=9D=E2=94=9C=D0=9D=E2=94=AC=E2=95=9B=E2=94=9C=D0=B5=E2=94=AC=
 =D0=B1=E2=94=AC=D0=B464bit =E2=94=9C=D0=9D=E2=94=9C=D0=A1=E2=94=AC=D0=B4=E2=
 =94=9C=D0=9B=E2=94=AC=D0=B5=E2=94=AC=E2=94=82=E2=94=AC=D0=B5=E2=94=9C=E2=94=
 =82=E2=94=AC=D0=B5=E2=94=9C=D0=A1=E2=94=AC=D0=B5=E2=94=AC=D0=B4=E2=94=AC=D0=
 =B5=E2=94=9C=D0=BB=E2=94=AC=D0=B4=E2=94=AC=E2=95=96=E2=94=AC=D0=B4=E2=94=9C=
 =D0=9A=E2=94=AC=D0=B4=E2=94=AC=D0=B4=E2=94=AC=E2=95=9B=E2=94=9C=D0=BC=E2=94=
 =AC=E2=95=A3=E2=94=9C=D0=B7=E2=94=AC=D0=B4=E2=94=9C=D0=9F 2TB =E2=94=AC=E2=
 =96=91=E2=94=9C=D0=9A=E2=94=AC=E2=95=9B=E2=94=9C=D0=B5=E2=94=AC=D0=B4=E2=94=
 =9C=D0=9E=E2=94=AC=D0=B5=E2=94=9C=D0=97=E2=94=AC=D0=B5=E2=94=AC=D0=B3=E2=94=
 =AC=D0=B5=E2=94=AC=E2=95=A3=E2=94=AC=D0=B5=E2=94=AC=D0=BF=E2=94=AC=D0=B4=E2=
 =94=9C=D0=9E=E2=94=AC=E2=95=97=E2=94=9C=E2=95=9B=E2=94=AC=D0=B4=E2=94=9C=D0=
 =9B
 +   =E2=94=9C=D0=90=E2=94=AC=E2=95=A1=E2=94=AC=E2=95=9B=E2=94=9C=D0=BF=E2=
 =94=AC=D0=B4=E2=94=9C=D0=9A=E2=94=9C=D0=93=E2=94=9C=D0=9D=E2=94=AC=D0=B4=E2=
 =94=9C=E2=96=93=E2=94=9C=D0=9A=E2=94=9C=D0=A6=E2=94=AC=D0=B4=E2=94=AC=E2=95=
 =A1=E2=94=AC=D0=B4=E2=94=9C=D0=9A=E2=94=AC=D0=B4=E2=94=AC=D0=B4=E2=94=AC=D0=
 =B4=E2=94=AC=E2=94=82=E2=94=AC=D0=B4=E2=94=9C=D0=98=E2=94=AC=D0=B4=E2=94=AC=
 =D0=BC=E2=94=AC=E2=94=A4=E2=94=9C=E2=95=9D=E2=94=9C=D0=92=E2=94=9C=D0=A4=E2=
 =94=AC=D0=B4=E2=94=AC=E2=95=A1=E2=94=AC=D0=B4=E2=94=9C=D0=BC=E2=94=AC=D0=B4=
 =E2=94=9C=D0=AE=E2=94=AC=D0=B4=E2=94=AC=E2=95=A3=E2=94=AC=D0=B1=E2=94=AC=D0=
 =B3
 +
 + */
 +
 +
 +#include   "conf.h"
 +#include   <sys/vfs.h>
 +
 +
 +//
 +// =E2=94=AC=E2=95=9C=E2=94=9C=D0=B9=E2=94=AC=E2=94=A4=E2=94=9C=E2=95=9D=
 =E2=94=AC=E2=96=93=E2=94=AC=E2=95=9C
 +//
 +static int df_init(void)
 +{
 +   return 0;
 +}
 +
 +static int df_sess_init(void)
 +{
 +   return 0;
 +}
 +
 +
 +//
 +// module handler
 +//
 +MODRET df_post_cwd(cmd_rec* cmd)
 +{
 +   char    buf[PATH_MAX+1];
 +   struct statfs   sfs;
 +
 +   if (getcwd(buf, sizeof(buf)) && statfs(buf, &sfs) =3D=3D 0) {
 +       long long   f =3D (long long)sfs.f_bavail * (long long)sfs.f_bsize;
 +       if (f >=3D ((long long)1 << 10)*1000000000L) {
 +           sprintf(buf, "Disk free space at this directory is %lld,%03lld,=
 %03lld MB.",
 +                   (f >> 20)/1000000, (f >> 20)/1000%1000, (f >> 20)%1000);
 +       } else if (f >=3D ((long long)1 << 10)*1000000) {
 +           sprintf(buf, "Disk free space at this directory is %lld,%03lld,=
 %03lld KB.",
 +                   (f >> 10)/1000000, (f >> 10)/1000%1000, (f >> 10)%1000);
 +       } else if (f >=3D ((long long)1 << 10)*1000) {
 +           sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS ONLY %lld,%0=
 3lld KB.", (f >> 10)/1000, (f >> 10)%1000);
 +       } else if (f >=3D 1000) {
 +           sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS ONLY %lld,%0=
 3lld Bytes.", f/1000, f%1000);
 +       } else {
 +           sprintf(buf, "DISK FREE SPACE AT THIS DIRECTORY IS ONLY %lld By=
 tes.", f);
 +       }
 +       pr_response_send_raw("250-%s", buf);
 +   }
 +   return HANDLED(cmd);
 +}
 +
 +
 +//
 +// module =E2=94=9C=D0=9D=E2=94=9C=D0=A1 directive
 +//
 +static conftable df_conftab[] =3D {
 +   { NULL }                        // directive =E2=94=AC=D0=B4=E2=94=9C=
 =D0=9F=E2=94=AC=D0=B5=E2=94=AC=E2=95=A1=E2=94=AC=D0=B5=E2=94=9C=D0=AD=E2=94=
 =AC=D0=B1=E2=94=AC=E2=95=9D=E2=94=AC=D0=B5=E2=94=9C=D0=98=E2=94=AC=D0=B4=E2=
 =94=AC=E2=95=96=E2=94=AC=D0=B4=E2=94=9C=D0=9A=E2=94=AC=D0=B4=E2=94=AC=D0=B4
 +};
 +
 +
 +//
 +// trap =E2=94=AC=D0=B4=E2=94=AC=E2=95=A3=E2=94=AC=D0=B4=E2=94=9C=D0=BB=E2=
 =94=AC=D0=B5=E2=94=AC=E2=94=82=E2=94=AC=D0=B5=E2=94=9C=D0=AE=E2=94=AC=D0=B5=
 =E2=94=9C=E2=94=82=E2=94=AC=D0=B5=E2=94=9C=D0=99=E2=94=AC=E2=96=91=E2=94=9C=
 =D0=BC=E2=94=9C=D0=9D=E2=94=9C=E2=95=96
 +//
 +static cmdtable df_cmdtab[] =3D {
 +   { POST_CMD,     C_CWD,  G_NONE, df_post_cwd,    FALSE, FALSE },
 +   { POST_CMD,     C_CDUP, G_NONE, df_post_cwd,    FALSE, FALSE },
 +   { 0,            NULL }
 +};
 +
 +
 +//
 +// module =E2=94=AC=E2=95=9B=E2=94=9C=E2=96=91=E2=94=9C=D0=9A=E2=94=9C=E2=
 =94=82
 +//
 +module df_module =3D {
 +
 +   /* Always NULL */
 +   NULL, NULL,
 +
 +   /* Module API version (2.0) */
 +   0x20,
 +
 +   /* Module name */
 +   "df",
 +
 +   /* Module configuration directive handlers */
 +   df_conftab,
 +
 +   /* Module command handlers */
 +   df_cmdtab,
 +
 +   /* Module authentication handlers (none in this case) */
 +   NULL,
 +
 +   /* Module initialization */
 +   df_init,
 +
 +   /* Session initialization */
 +   df_sess_init
 +
 +};
 diff -r -u -P ./proftpd-1.3.1/modules/mod_ls.c ./proftpd-1.3.1_patched/modu=
 les/mod_ls.c
 --- ./proftpd-1.3.1/modules/mod_ls.c    2007-09-28 04:53:59.000000000 +0400
 +++ ./proftpd-1.3.1_patched/modules/mod_ls.c    2008-03-24 02:55:39.0000000=
 00 +0300
 @@ -244,12 +244,15 @@
    return res;
  }
 =20
 +extern char* local2remote(char*);
 +
  /* sendline() now has an internal buffer, to help speed up LIST output. */
  static int sendline(int flags, char *fmt, ...) {
    static char listbuf[PR_TUNABLE_BUFFER_SIZE] =3D {'\0'};
    va_list msg;
    char buf[PR_TUNABLE_BUFFER_SIZE+1] =3D {'\0'};
    int res =3D 0;
 +  char* buf2;
 =20
    if (flags & LS_SENDLINE_FL_FLUSH) {
      size_t listbuflen =3D strlen(listbuf);
 @@ -274,6 +277,13 @@
 =20
    buf[sizeof(buf)-1] =3D '\0';
 =20
 +  if (buf[0]) {
 +    buf2 =3D local2remote(buf);
 +    if (buf2) {
 +      strcpy(buf, buf2); free(buf2);
 +    }
 +  }
 +
    /* If buf won't fit completely into listbuf, flush listbuf */
    if (strlen(buf) >=3D (sizeof(listbuf) - strlen(listbuf))) {
      res =3D pr_data_xfer(listbuf, strlen(listbuf));
 diff -r -u -P ./proftpd-1.3.1/src/netio.c ./proftpd-1.3.1_patched/src/netio=
 .c
 --- ./proftpd-1.3.1/src/netio.c 2007-08-22 18:50:23.000000000 +0400
 +++ ./proftpd-1.3.1_patched/src/netio.c 2008-03-24 02:55:39.000000000 +0300
 @@ -547,9 +547,12 @@
    return -1;
  }
 =20
 +extern char* local2remote(char* local);
 +
  int pr_netio_printf(pr_netio_stream_t *nstrm, const char *fmt, ...) {
    va_list msg;
    char buf[PR_RESPONSE_BUFFER_SIZE] =3D {'\0'};
 +  char* p;
 =20
    if (!nstrm) {
      errno =3D EINVAL;
 @@ -561,6 +564,13 @@
    va_end(msg);
    buf[sizeof(buf)-1] =3D '\0';
 =20
 +  if (buf[0]) {
 +    p =3D local2remote(buf);
 +    if (p) {
 +      strcpy(buf, p); free(p);
 +    }
 +  }
 +
    return pr_netio_write(nstrm, buf, strlen(buf));
  }
 =20
 @@ -954,46 +964,6 @@
        cp =3D *pbuf->current++;
        pbuf->remaining++;
 =20
 -      switch (mode) {
 -        case IAC:
 -          switch (cp) {
 -            case WILL:
 -            case WONT:
 -            case DO:
 -            case DONT:
 -              mode =3D cp;
 -              continue;
 -
 -            case IAC:
 -              mode =3D 0;
 -              break;
 -
 -            default:
 -              /* Ignore */
 -              mode =3D 0;
 -              continue;
 -          }
 -          break;
 -
 -        case WILL:
 -        case WONT:
 -          pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp);
 -          mode =3D 0;
 -          continue;
 -
 -        case DO:
 -        case DONT:
 -          pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp);
 -          mode =3D 0;
 -          continue;
 -
 -        default:
 -          if (cp =3D=3D IAC) {
 -            mode =3D cp;
 -            continue;
 -          }
 -          break;
 -      }
 =20
        *bp++ =3D cp;
        buflen--;
 
 
 --=20
  Alexey V. Drozdov                          mailto:nyquist@ctam.tu-bryansk.=
 ru
 

From: Oleg Gawriloff <barzog@telecom.by>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/114502: proftpd with mod_codeconv compiled hangs with signal
 11 when encounters client command OPTS utf8 on
Date: Wed, 06 Aug 2008 12:22:00 +0300

 This is a cryptographically signed message in MIME format.
 
 --------------ms010805070206040600000203
 Content-Type: text/plain; charset=UTF-8; format=flowed
 Content-Transfer-Encoding: 7bit
 
 With inclusion in latest proftpd 1.3.2rc1 directive UseEncoding 
 mod_codeconv patch is no longer needed anymore.
 
 --------------ms010805070206040600000203
 Content-Type: application/x-pkcs7-signature; name="smime.p7s"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="smime.p7s"
 Content-Description: S/MIME Cryptographic Signature
 
 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIHtDCC
 A9YwggM/oAMCAQICAgJSMA0GCSqGSIb3DQEBBAUAMIGYMQswCQYDVQQGEwJCWTEQMA4GA1UE
 CBMHQmVsYXJ1czEOMAwGA1UEBxMFTWluc2sxFzAVBgNVBAoTDkF0bGFudC1UZWxlY29tMRcw
 FQYDVQQLEw5BdGxhbnQtVGVsZWNvbTETMBEGA1UEAxMKdGVsZWNvbS5ieTEgMB4GCSqGSIb3
 DQEJARYRYmFyem9nQHRlbGVjb20uYnkwHhcNMDgwNzMwMTIxMjQzWhcNMDkwNzMwMTIxMjQz
 WjCBnzELMAkGA1UEBhMCQlkxEDAOBgNVBAgTB0JlbGFydXMxDjAMBgNVBAcTBU1pbnNrMRcw
 FQYDVQQKEw5BdGxhbnQtVGVsZWNvbTEXMBUGA1UECxMOQXRsYW50LVRlbGVjb20xGjAYBgNV
 BAMUEWJhcnpvZ0B0ZWxlY29tLmJ5MSAwHgYJKoZIhvcNAQkBFhFiYXJ6b2dAdGVsZWNvbS5i
 eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuFEB0E3OhT/9NkCYZLGgM3PQfiJfTO2b
 kLfqnAneaC1+/U9WY9c5dleB3KpMxAl/Y9HWo3ClaVZ2Z56V3nj0f9KUTd1Up9G5LgGvP8VJ
 s5NLiiRqJ9isPx44yEuHTwEhGl/zotlTD0rRLVHfqof1cqDe3TobsaevJv0uX1MORRUCAwEA
 AaOCASQwggEgMAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVk
 IENlcnRpZmljYXRlMB0GA1UdDgQWBBSGPX6kqHA5V5oSbuhmF4Nzx9GNjjCBxQYDVR0jBIG9
 MIG6gBQ1Q0N4+R+9Wg0AAlfWqtErWCUf9aGBnqSBmzCBmDELMAkGA1UEBhMCQlkxEDAOBgNV
 BAgTB0JlbGFydXMxDjAMBgNVBAcTBU1pbnNrMRcwFQYDVQQKEw5BdGxhbnQtVGVsZWNvbTEX
 MBUGA1UECxMOQXRsYW50LVRlbGVjb20xEzARBgNVBAMTCnRlbGVjb20uYnkxIDAeBgkqhkiG
 9w0BCQEWEWJhcnpvZ0B0ZWxlY29tLmJ5ggEAMA0GCSqGSIb3DQEBBAUAA4GBACyUjVy0C0C7
 6Wt9w5dAfxLtFXLPIn+dxRWK0r6G/F4a7mLmSHy2fDzn/PSNEDLh+KUpNQNfvXwVdY3ftLVS
 L6gkSNNnbgkiXH2MxlvGHFH+NWbLkNE+t16/OUSIh2iRu1paEKZPtA7f6VviSZ10dTsuKszC
 a85hdq+9cP8Ph3EuMIID1jCCAz+gAwIBAgICAlIwDQYJKoZIhvcNAQEEBQAwgZgxCzAJBgNV
 BAYTAkJZMRAwDgYDVQQIEwdCZWxhcnVzMQ4wDAYDVQQHEwVNaW5zazEXMBUGA1UEChMOQXRs
 YW50LVRlbGVjb20xFzAVBgNVBAsTDkF0bGFudC1UZWxlY29tMRMwEQYDVQQDEwp0ZWxlY29t
 LmJ5MSAwHgYJKoZIhvcNAQkBFhFiYXJ6b2dAdGVsZWNvbS5ieTAeFw0wODA3MzAxMjEyNDNa
 Fw0wOTA3MzAxMjEyNDNaMIGfMQswCQYDVQQGEwJCWTEQMA4GA1UECBMHQmVsYXJ1czEOMAwG
 A1UEBxMFTWluc2sxFzAVBgNVBAoTDkF0bGFudC1UZWxlY29tMRcwFQYDVQQLEw5BdGxhbnQt
 VGVsZWNvbTEaMBgGA1UEAxQRYmFyem9nQHRlbGVjb20uYnkxIDAeBgkqhkiG9w0BCQEWEWJh
 cnpvZ0B0ZWxlY29tLmJ5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4UQHQTc6FP/02
 QJhksaAzc9B+Il9M7ZuQt+qcCd5oLX79T1Zj1zl2V4HcqkzECX9j0dajcKVpVnZnnpXeePR/
 0pRN3VSn0bkuAa8/xUmzk0uKJGon2Kw/HjjIS4dPASEaX/Oi2VMPStEtUd+qh/VyoN7dOhux
 p68m/S5fUw5FFQIDAQABo4IBJDCCASAwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3Bl
 blNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFIY9fqSocDlXmhJu6GYXg3PH
 0Y2OMIHFBgNVHSMEgb0wgbqAFDVDQ3j5H71aDQACV9aq0StYJR/1oYGepIGbMIGYMQswCQYD
 VQQGEwJCWTEQMA4GA1UECBMHQmVsYXJ1czEOMAwGA1UEBxMFTWluc2sxFzAVBgNVBAoTDkF0
 bGFudC1UZWxlY29tMRcwFQYDVQQLEw5BdGxhbnQtVGVsZWNvbTETMBEGA1UEAxMKdGVsZWNv
 bS5ieTEgMB4GCSqGSIb3DQEJARYRYmFyem9nQHRlbGVjb20uYnmCAQAwDQYJKoZIhvcNAQEE
 BQADgYEALJSNXLQLQLvpa33Dl0B/Eu0Vcs8if53FFYrSvob8XhruYuZIfLZ8POf89I0QMuH4
 pSk1A1+9fBV1jd+0tVIvqCRI02duCSJcfYzGW8YcUf41ZsuQ0T63Xr85RIiHaJG7WloQpk+0
 Dt/pW+JJnXR1Oy4qzMJrzmF2r71w/w+HcS4xggNjMIIDXwIBATCBnzCBmDELMAkGA1UEBhMC
 QlkxEDAOBgNVBAgTB0JlbGFydXMxDjAMBgNVBAcTBU1pbnNrMRcwFQYDVQQKEw5BdGxhbnQt
 VGVsZWNvbTEXMBUGA1UECxMOQXRsYW50LVRlbGVjb20xEzARBgNVBAMTCnRlbGVjb20uYnkx
 IDAeBgkqhkiG9w0BCQEWEWJhcnpvZ0B0ZWxlY29tLmJ5AgICUjAJBgUrDgMCGgUAoIICGTAY
 BgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wODA4MDYwOTIyMDBa
 MCMGCSqGSIb3DQEJBDEWBBQO1LMBwd3iWikczpU3QOt/tiwWmTBSBgkqhkiG9w0BCQ8xRTBD
 MAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzAN
 BggqhkiG9w0DAgIBKDCBsAYJKwYBBAGCNxAEMYGiMIGfMIGYMQswCQYDVQQGEwJCWTEQMA4G
 A1UECBMHQmVsYXJ1czEOMAwGA1UEBxMFTWluc2sxFzAVBgNVBAoTDkF0bGFudC1UZWxlY29t
 MRcwFQYDVQQLEw5BdGxhbnQtVGVsZWNvbTETMBEGA1UEAxMKdGVsZWNvbS5ieTEgMB4GCSqG
 SIb3DQEJARYRYmFyem9nQHRlbGVjb20uYnkCAgJSMIGyBgsqhkiG9w0BCRACCzGBoqCBnzCB
 mDELMAkGA1UEBhMCQlkxEDAOBgNVBAgTB0JlbGFydXMxDjAMBgNVBAcTBU1pbnNrMRcwFQYD
 VQQKEw5BdGxhbnQtVGVsZWNvbTEXMBUGA1UECxMOQXRsYW50LVRlbGVjb20xEzARBgNVBAMT
 CnRlbGVjb20uYnkxIDAeBgkqhkiG9w0BCQEWEWJhcnpvZ0B0ZWxlY29tLmJ5AgICUjANBgkq
 hkiG9w0BAQEFAASBgG3YvoAnI6uwAjS1lpRAGCvr6UprjrS6KRCZy5W6YgwcNJmRE0+hFTHU
 dWiOH/PIjcgS0JgFceeZ1moe43YuNIXlt7UsHXABxB8ejEV2sZY5694SA9iEWHy4QFzbjAjK
 heCbX11rQlnaUipKw4RAbyhCcCxvVJADmtV/Bv4BuVf5AAAAAAAA
 --------------ms010805070206040600000203--

From: Beech Rintoul <beech@freebsd.org>
To: Oleg Gawriloff <barzog@telecom.by>
Cc: bug-followup@FreeBSD.org,
 Beech Rintoul <beech@freebsd.org>
Subject: Re: ports/114502: proftpd with mod_codeconv compiled hangs with signal 11 when encounters client command OPTS utf8 on
Date: Wed, 6 Aug 2008 06:22:39 -0800

 On Wednesday 06 August 2008, Oleg Gawriloff said:
 > The following reply was made to PR ports/114502; it has been noted
 > by GNATS.
 >
 > From: Oleg Gawriloff <barzog@telecom.by>
 > To: bug-followup@FreeBSD.org
 > Cc:
 > Subject: Re: ports/114502: proftpd with mod_codeconv compiled hangs
 > with signal 11 when encounters client command OPTS utf8 on
 > Date: Wed, 06 Aug 2008 12:22:00 +0300
 
 This is a third party module which is not supported by proftpd., It's 
 no longer maintained by the author and will be removed from the next 
 version. It has been somewhat incompatible with several releases now. 
 Proftpd recommends not using it, but it seems to work for some people 
 so was left as an option. Unless someone steps in to upgrade and 
 maintain the code, it's scheduled for removal.
 
 Beech
 
 
 
 -- 
 ---------------------------------------------------------------------------------------
 Beech Rintoul - FreeBSD Developer - beech@FreeBSD.org
 /"\   ASCII Ribbon Campaign  | FreeBSD Since 4.x
 \ / - NO HTML/RTF in e-mail   | http://people.freebsd.org/~beech
  X  - NO Word docs in e-mail | Skype: akbeech
 / \  - http://www.FreeBSD.org/releases/7.0R/announce.html
 ---------------------------------------------------------------------------------------
 
 
 
>Unformatted:
