On Fri, Jan 20, 2006 at 12:30:06PM +0100, Allard Hoeve wrote:
> Package: proftpd
> Version: 1.2.10-27
> Severity: normal
> Tags: patch
> 
> 
> Dear Maintainer,
> 
> I've backported the 1.2.10-27 package to sarge, in order to fix the signal 11 
> problems you addressed lately. However, I'm running into some segfaults
> of my own.
> 
> On connection closure (closed by client), proftpd reports a signal 11 in the 
> logfiles. While not very important, it sure is annoying.
> 
> After debugging the problem, I discovered that the segfault is triggered in 
> src/netio.c. For some reason, the close function pointer in the ctrl_netio
> variable is a nullpointer. The code surrounding the closing of the connection 
> checks for a nullpointer on the variable, but not on the function
> itself. The attached patch fixes the problem for us.
> 
> Please apply. This patch possibly does not fix the underlying problem, but it 
> fixes the side effects. The patch is sane.
> 

Uhm, 1.2.10-20 on sarge does not have this kind of issue AFAIK. Did you
try it from my repo? Why are you using -27?
This is quite strange and as you say the patch does not solve the issue, just 
remove
the effect of a bug somewhere.
Could you provide strace, core file, proftpd.conf for a debug-enabled
version of the program? 

> --- proftpd-1.2.10/src/netio.c.old    2004-06-15 16:45:21.000000000 +0000
> +++ proftpd-1.2.10/src/netio.c                2006-01-20 11:01:08.000000000 
> +0000
> @@ -205,21 +205,21 @@
>    }
>  
>    if (nstrm->strm_type == PR_NETIO_STRM_CTRL) {
> -    res = ctrl_netio ? ctrl_netio->close(nstrm) :
> +    res = ctrl_netio && ctrl_netio->close ? ctrl_netio->close(nstrm) :
>        core_ctrl_netio->close(nstrm);
>      destroy_pool(nstrm->strm_pool);
>      return res;
>    }
>  
>    if (nstrm->strm_type == PR_NETIO_STRM_DATA) {
> -    res = data_netio ? data_netio->close(nstrm) :
> +    res = data_netio && data_netio->close ? data_netio->close(nstrm) :
>        core_data_netio->close(nstrm);
>      destroy_pool(nstrm->strm_pool);
>      return res;
>    }
>  
>    if (nstrm->strm_type == PR_NETIO_STRM_OTHR) {
> -    res = othr_netio ? othr_netio->close(nstrm) :
> +    res = othr_netio && othr_netio->close ? othr_netio->close(nstrm) :
>        core_othr_netio->close(nstrm);
>      destroy_pool(nstrm->strm_pool);
>      return res;


-- 
Francesco P. Lovergine


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to