Blame SOURCES/freeradius-dont-detach-after-perl_parse.patch

75e927
From fa9b2cd01fb5dbe583f5063f611a45c9d033a54a Mon Sep 17 00:00:00 2001
75e927
From: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>
75e927
Date: Tue, 30 Sep 2014 16:19:47 +0300
75e927
Subject: [PATCH 1/1] perl: Don't call detach after failed perl_parse
75e927
75e927
Don't call "detach" callback in rlm_perl, if perl_parse of the Perl
75e927
module failed.
75e927
75e927
This fixes segfault when the module file cannot be read:
75e927
75e927
    Can't open perl script "/etc/raddb/mods-config/perl/example.pl": Permission denied
75e927
    rlm_perl: perl_parse failed: /etc/raddb/mods-config/perl/example.pl not found or has syntax errors.
75e927
    /etc/raddb/mods-enabled/perl[7]: Instantiation failed for module "perl"
75e927
    Segmentation fault
75e927
---
75e927
 src/modules/rlm_perl/rlm_perl.c | 4 +++-
75e927
 1 file changed, 3 insertions(+), 1 deletion(-)
75e927
75e927
diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c
75e927
index d423524..039d7c8 100644
75e927
--- a/src/modules/rlm_perl/rlm_perl.c
75e927
+++ b/src/modules/rlm_perl/rlm_perl.c
75e927
@@ -73,6 +73,7 @@ typedef struct rlm_perl_t {
75e927
 	char const	*xlat_name;
75e927
 	char const	*perl_flags;
75e927
 	PerlInterpreter	*perl;
75e927
+	bool             perl_parsed;
75e927
 	pthread_key_t	*thread_key;
75e927
 
75e927
 #ifdef USE_ITHREADS
75e927
@@ -538,6 +539,7 @@ static int mod_instantiate(CONF_SECTION *conf, void *instance)
75e927
 	PL_endav = (AV *)NULL;
75e927
 
75e927
 	if(!exitstatus) {
75e927
+		inst->perl_parsed = true;
75e927
 		perl_run(inst->perl);
75e927
 	} else {
75e927
 		ERROR("rlm_perl: perl_parse failed: %s not found or has syntax errors. \n", inst->module);
75e927
@@ -1012,7 +1014,7 @@ static int mod_detach(void *instance)
75e927
 	}
75e927
 #endif
75e927
 
75e927
-	if (inst->func_detach) {
75e927
+	if (inst->perl_parsed && inst->func_detach) {
75e927
 		dTHXa(inst->perl);
75e927
 		PERL_SET_CONTEXT(inst->perl);
75e927
 		{
75e927
-- 
75e927
2.1.0
75e927