[RADIATOR] Radiator dying in SIGSEGV

Matti Saarinen mjsaarin at cc.helsinki.fi
Mon Jun 1 06:50:34 CDT 2009


Hello,

Our Radiator had died several times in SIGSEGV. The reason for this has
so far been unknown. Now, a colleague of mine took interest in this and
added more tracing into the Radiator code. And he found what kills
radiusd.

There is PRF subroutine defined in Radius/TLS.pm. It defines variable
called $session as follows.

 my $session = &Net::SSLeay::get_session($context->{ssl});

It seems that in some cases get_session may return null. When that
happens the next line in subroutine code fails and radiusd gets SIGSEGV
and dies. The next line is.

 my $master_key = &Net::SSLeay::SESSION_get_master_key($session);


I think the fix would be that the code should check whether $session is
not null before trying to use it. What I don't know is what the
subroutine should return if $session happens to be null.


-- 
- Matti -



More information about the radiator mailing list