FreeRADIUS / freeradius-server

FreeRADIUS - A multi-protocol policy server.
http://freeradius.org
GNU General Public License v2.0
2.11k stars 1.08k forks source link

rlm_perl: segmentation fault #806

Closed pbalsianok closed 10 years ago

pbalsianok commented 10 years ago
radiusd: FreeRADIUS Version 3.0.5 (git #b662cfa), for host i686-pc-linux-gnu, built on Oct  6 2014 at 20:11:36
Copyright (C) 1999-2014 The FreeRADIUS server project and contributors
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License
For more information about these matters, see the file named COPYRIGHT
Starting - reading configuration files ...
including dictionary file /mnt/sdcard/software/freeradius-server-3.0.x/share/freeradius/dictionary
including dictionary file /mnt/sdcard/software/freeradius-server-3.0.x/share/freeradius/dictionary.dhcp
including dictionary file /mnt/sdcard/software/freeradius-server-3.0.x/share/freeradius/dictionary.vqp
including dictionary file ./dictionary
including configuration file ./radiusd.conf
including configuration file ./proxy.conf
including configuration file ./clients.conf
including files in directory ./mods-enabled/
including configuration file ./mods-enabled/digest
including configuration file ./mods-enabled/pap
including configuration file ./mods-enabled/detail
including configuration file ./mods-enabled/dynamic_clients
including configuration file ./mods-enabled/cache_eap
including configuration file ./mods-enabled/ntlm_auth
including configuration file ./mods-enabled/eap
including configuration file ./mods-enabled/expiration
including configuration file ./mods-enabled/radutmp
including configuration file ./mods-enabled/sradutmp
including configuration file ./mods-enabled/detail.log
including configuration file ./mods-enabled/logintime
including configuration file ./mods-enabled/attr_filter
including configuration file ./mods-enabled/chap
including configuration file ./mods-enabled/linelog
including configuration file ./mods-enabled/replicate
including configuration file ./mods-enabled/echo
including configuration file ./mods-enabled/exec
including configuration file ./mods-enabled/unix
including configuration file ./mods-enabled/expr
including configuration file ./mods-enabled/utf8
including configuration file ./mods-enabled/preprocess
including configuration file ./mods-enabled/realm
including configuration file ./mods-enabled/passwd
including configuration file ./mods-enabled/dhcp
including configuration file ./mods-enabled/perl
including configuration file ./mods-enabled/unpack
including configuration file ./mods-enabled/files
including configuration file ./mods-enabled/soh
including configuration file ./mods-enabled/always
including configuration file ./mods-enabled/mschap
including files in directory ./policy.d/
including configuration file ./policy.d/abfab-tr
including configuration file ./policy.d/cui
including configuration file ./policy.d/control
including configuration file ./policy.d/filter
including configuration file ./policy.d/debug
including configuration file ./policy.d/eap
including configuration file ./policy.d/accounting
including configuration file ./policy.d/dhcp
including configuration file ./policy.d/operator-name
including configuration file ./policy.d/canonicalization
including files in directory ./sites-enabled/
including configuration file ./sites-enabled/default
including configuration file ./sites-enabled/inner-tunnel
main {
    name = "radiusd"
    prefix = "/mnt/sdcard/software/freeradius-server-3.0.x"
    localstatedir = "/mnt/sdcard/software/freeradius-server-3.0.x/var"
    sbindir = "/mnt/sdcard/software/freeradius-server-3.0.x/sbin"
    logdir = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius"
    run_dir = "/mnt/sdcard/software/freeradius-server-3.0.x/var/run/radiusd"
    libdir = "/mnt/sdcard/software/freeradius-server-3.0.x/lib"
    radacctdir = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radacct"
    hostname_lookups = no
    max_request_time = 30
    cleanup_delay = 5
    max_requests = 1024
    pidfile = "/mnt/sdcard/software/freeradius-server-3.0.x/var/run/radiusd/radiusd.pid"
    checkrad = "/mnt/sdcard/software/freeradius-server-3.0.x/sbin/checkrad"
    debug_level = 0
    proxy_requests = yes
 log {
    stripped_names = no
    auth = no
    auth_badpass = no
    auth_goodpass = no
    colourise = yes
    msg_denied = "You are already logged in - access denied"
 }
 security {
    max_attributes = 200
    reject_delay = 1
    status_server = yes
    allow_vulnerable_openssl = "yes"
 }
}
radiusd: #### Loading Realms and Home Servers ####
 proxy server {
    retry_delay = 5
    retry_count = 3
    default_fallback = no
    dead_time = 120
    wake_all_if_all_dead = no
 }
 home_server localhost {
    ipaddr = 127.0.0.1
    port = 1812
    type = "auth"
    secret = <<< secret >>>
    response_window = 20.000000
    response_timeouts = 1
    max_outstanding = 65536
    zombie_period = 40
    status_check = "status-server"
    ping_interval = 30
    check_interval = 30
    check_timeout = 4
    num_answers_to_alive = 3
    revive_interval = 120
  coa {
    irt = 2
    mrt = 16
    mrc = 5
    mrd = 30
  }
  limit {
    max_connections = 16
    max_requests = 0
    lifetime = 0
    idle_timeout = 0
  }
 }
 home_server_pool my_auth_failover {
    type = fail-over
    home_server = localhost
 }
 realm example.com {
    auth_pool = my_auth_failover
 }
 realm LOCAL {
 }
radiusd: #### Loading Clients ####
 client localhost {
    ipaddr = 127.0.0.1
    require_message_authenticator = no
    secret = <<< secret >>>
    nas_type = "other"
    proto = "*"
  limit {
    max_connections = 16
    lifetime = 0
    idle_timeout = 30
  }
 }
 client localhost_ipv6 {
    ipv6addr = ::1
    require_message_authenticator = no
    secret = <<< secret >>>
  limit {
    max_connections = 16
    lifetime = 0
    idle_timeout = 30
  }
 }
radiusd: #### Instantiating modules ####
 instantiate {
 }
 modules {
  # Loaded module rlm_digest
  # Instantiating module "digest" from file ./mods-enabled/digest
  # Loaded module rlm_pap
  # Instantiating module "pap" from file ./mods-enabled/pap
  pap {
    normalise = yes
  }
  # Loaded module rlm_detail
  # Instantiating module "detail" from file ./mods-enabled/detail
  detail {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/detail-%Y%m%d"
    header = "%t"
    permissions = 384
    locking = no
    log_packet_header = no
  }
  # Loaded module rlm_dynamic_clients
  # Instantiating module "dynamic_clients" from file ./mods-enabled/dynamic_clients
  # Loaded module rlm_cache
  # Instantiating module "cache_eap" from file ./mods-enabled/cache_eap
  cache cache_eap {
    key = "%{%{control:State}:-%{%{reply:State}:-%{State}}}"
    ttl = 15
    max_entries = 16384
    epoch = 0
    add_stats = no
  }
  # Loaded module rlm_exec
  # Instantiating module "ntlm_auth" from file ./mods-enabled/ntlm_auth
  exec ntlm_auth {
    wait = yes
    program = "/path/to/ntlm_auth --request-nt-key --domain=MYDOMAIN --username=%{mschap:User-Name} --password=%{User-Password}"
    shell_escape = yes
  }
  # Loaded module rlm_eap
  # Instantiating module "eap" from file ./mods-enabled/eap
  eap {
    default_eap_type = "md5"
    timer_expire = 60
    ignore_unknown_eap_types = no
    mod_accounting_username_bug = no
    max_sessions = 1024
  }
   # Linked to sub-module rlm_eap_md5
   # Linked to sub-module rlm_eap_leap
   # Linked to sub-module rlm_eap_gtc
   gtc {
    challenge = "Password: "
    auth_type = "PAP"
   }
   # Linked to sub-module rlm_eap_tls
   tls {
    tls = "tls-common"
   }
   tls-config tls-common {
    rsa_key_exchange = no
    dh_key_exchange = yes
    rsa_key_length = 512
    dh_key_length = 512
    verify_depth = 0
    ca_path = "./certs"
    pem_file_type = yes
    private_key_file = "./certs/server.pem"
    certificate_file = "./certs/server.pem"
    ca_file = "./certs/ca.pem"
    private_key_password = <<< secret >>>
    dh_file = "./certs/dh"
    fragment_size = 1024
    include_length = yes
    check_crl = no
    cipher_list = "DEFAULT"
    ecdh_curve = "prime256v1"
    cache {
        enable = yes
        lifetime = 24
        max_entries = 255
    }
    verify {
    }
    ocsp {
        enable = no
        override_cert_url = yes
        url = "http://127.0.0.1/ocsp/"
        use_nonce = yes
        timeout = 0
        softfail = yes
    }
   }
   # Linked to sub-module rlm_eap_ttls
   ttls {
    tls = "tls-common"
    default_eap_type = "md5"
    copy_request_to_tunnel = no
    use_tunneled_reply = no
    virtual_server = "inner-tunnel"
    include_length = yes
    require_client_cert = no
   }
Using cached TLS configuration from previous invocation
   # Linked to sub-module rlm_eap_peap
   peap {
    tls = "tls-common"
    default_method = "mschapv2"
    copy_request_to_tunnel = no
    use_tunneled_reply = no
    proxy_tunneled_request_as_eap = yes
    virtual_server = "inner-tunnel"
    soh = no
    require_client_cert = no
   }
Using cached TLS configuration from previous invocation
   # Linked to sub-module rlm_eap_mschapv2
   mschapv2 {
    with_ntdomain_hack = no
    send_error = no
   }
  # Loaded module rlm_expiration
  # Instantiating module "expiration" from file ./mods-enabled/expiration
  # Loaded module rlm_radutmp
  # Instantiating module "radutmp" from file ./mods-enabled/radutmp
  radutmp {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radutmp"
    username = "%{User-Name}"
    case_sensitive = yes
    check_with_nas = yes
    permissions = 384
    caller_id = yes
  }
  # Instantiating module "sradutmp" from file ./mods-enabled/sradutmp
  radutmp sradutmp {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/sradutmp"
    username = "%{User-Name}"
    case_sensitive = yes
    check_with_nas = yes
    permissions = 420
    caller_id = no
  }
  # Instantiating module "auth_log" from file ./mods-enabled/detail.log
  detail auth_log {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d"
    header = "%t"
    permissions = 384
    locking = no
    log_packet_header = no
  }
rlm_detail (auth_log): 'User-Password' suppressed, will not appear in detail output
  # Instantiating module "reply_log" from file ./mods-enabled/detail.log
  detail reply_log {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/reply-detail-%Y%m%d"
    header = "%t"
    permissions = 384
    locking = no
    log_packet_header = no
  }
  # Instantiating module "pre_proxy_log" from file ./mods-enabled/detail.log
  detail pre_proxy_log {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/pre-proxy-detail-%Y%m%d"
    header = "%t"
    permissions = 384
    locking = no
    log_packet_header = no
  }
  # Instantiating module "post_proxy_log" from file ./mods-enabled/detail.log
  detail post_proxy_log {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/post-proxy-detail-%Y%m%d"
    header = "%t"
    permissions = 384
    locking = no
    log_packet_header = no
  }
  # Loaded module rlm_logintime
  # Instantiating module "logintime" from file ./mods-enabled/logintime
  logintime {
    minimum_timeout = 60
  }
  # Loaded module rlm_attr_filter
  # Instantiating module "attr_filter.post-proxy" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.post-proxy {
    filename = "./mods-config/attr_filter/post-proxy"
    key = "%{Realm}"
    relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/post-proxy
  # Instantiating module "attr_filter.pre-proxy" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.pre-proxy {
    filename = "./mods-config/attr_filter/pre-proxy"
    key = "%{Realm}"
    relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/pre-proxy
  # Instantiating module "attr_filter.access_reject" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.access_reject {
    filename = "./mods-config/attr_filter/access_reject"
    key = "%{User-Name}"
    relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/access_reject
  # Instantiating module "attr_filter.access_challenge" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.access_challenge {
    filename = "./mods-config/attr_filter/access_challenge"
    key = "%{User-Name}"
    relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/access_challenge
  # Instantiating module "attr_filter.accounting_response" from file ./mods-enabled/attr_filter
  attr_filter attr_filter.accounting_response {
    filename = "./mods-config/attr_filter/accounting_response"
    key = "%{User-Name}"
    relaxed = no
  }
reading pairlist file ./mods-config/attr_filter/accounting_response
  # Loaded module rlm_chap
  # Instantiating module "chap" from file ./mods-enabled/chap
  # Loaded module rlm_linelog
  # Instantiating module "linelog" from file ./mods-enabled/linelog
  linelog {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/linelog"
    permissions = 384
    format = "This is a log message for %{User-Name}"
    reference = "messages.%{%{Packet-Type}:-default}"
  }
  # Instantiating module "log_accounting" from file ./mods-enabled/linelog
  linelog log_accounting {
    filename = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/linelog-accounting"
    permissions = 384
    format = ""
    reference = "Accounting-Request.%{%{Acct-Status-Type}:-unknown}"
  }
  # Loaded module rlm_replicate
  # Instantiating module "replicate" from file ./mods-enabled/replicate
  # Instantiating module "echo" from file ./mods-enabled/echo
  exec echo {
    wait = yes
    program = "/bin/echo %{User-Name}"
    input_pairs = "request"
    output_pairs = "reply"
    shell_escape = yes
  }
  # Instantiating module "exec" from file ./mods-enabled/exec
  exec {
    wait = no
    input_pairs = "request"
    shell_escape = yes
    timeout = 10
  }
  # Loaded module rlm_unix
  # Instantiating module "unix" from file ./mods-enabled/unix
  unix {
    radwtmp = "/mnt/sdcard/software/freeradius-server-3.0.x/var/log/radius/radwtmp"
  }
  # Loaded module rlm_expr
  # Instantiating module "expr" from file ./mods-enabled/expr
  expr {
    safe_characters = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_: /"
  }
  # Loaded module rlm_utf8
  # Instantiating module "utf8" from file ./mods-enabled/utf8
  # Loaded module rlm_preprocess
  # Instantiating module "preprocess" from file ./mods-enabled/preprocess
  preprocess {
    huntgroups = "./mods-config/preprocess/huntgroups"
    hints = "./mods-config/preprocess/hints"
    with_ascend_hack = no
    ascend_channels_per_line = 23
    with_ntdomain_hack = no
    with_specialix_jetstream_hack = no
    with_cisco_vsa_hack = no
    with_alvarion_vsa_hack = no
  }
reading pairlist file ./mods-config/preprocess/huntgroups
reading pairlist file ./mods-config/preprocess/hints
  # Loaded module rlm_realm
  # Instantiating module "IPASS" from file ./mods-enabled/realm
  realm IPASS {
    format = "prefix"
    delimiter = "/"
    ignore_default = no
    ignore_null = no
  }
  # Instantiating module "suffix" from file ./mods-enabled/realm
  realm suffix {
    format = "suffix"
    delimiter = "@"
    ignore_default = no
    ignore_null = no
  }
  # Instantiating module "realmpercent" from file ./mods-enabled/realm
  realm realmpercent {
    format = "suffix"
    delimiter = "%"
    ignore_default = no
    ignore_null = no
  }
  # Instantiating module "ntdomain" from file ./mods-enabled/realm
  realm ntdomain {
    format = "prefix"
    delimiter = "\"
    ignore_default = no
    ignore_null = no
  }
  # Loaded module rlm_passwd
  # Instantiating module "etc_passwd" from file ./mods-enabled/passwd
  passwd etc_passwd {
    filename = "/etc/passwd"
    format = "*User-Name:Crypt-Password:"
    delimiter = ":"
    ignore_nislike = no
    ignore_empty = yes
    allow_multiple_keys = no
    hash_size = 100
  }
rlm_passwd: nfields: 3 keyfield 0(User-Name) listable: no
  # Loaded module rlm_dhcp
  # Instantiating module "dhcp" from file ./mods-enabled/dhcp
  # Loaded module rlm_perl
  # Instantiating module "perl" from file ./mods-enabled/perl
  perl {
    filename = "./mods-config/perl/example.pl"
    func_authorize = "authorize"
    func_authenticate = "authenticate"
    func_post_auth = "post_auth"
    func_accounting = "accounting"
    func_preacct = "preacct"
    func_checksimul = "checksimul"
    func_detach = "detach"
    func_xlat = "xlat"
    func_pre_proxy = "pre_proxy"
    func_post_proxy = "post_proxy"
    func_recv_coa = "recv_coa"
    func_send_coa = "send_coa"
  }
rlm_perl (perl): parsing 'config' section...
Segmentation fault (core dumped)

gdb-radiusd.log
  Id   Target Id         Frame 
* 1    Thread 0xb725e700 (LWP 17272) 0xb70308e9 in Perl_get_hv () from /usr/lib/libperl.so.5.18

Thread 1 (Thread 0xb725e700 (LWP 17272)):
#0  0xb70308e9 in Perl_get_hv () from /usr/lib/libperl.so.5.18
No symbol table info available.
#1  0xb71acc70 in mod_instantiate (conf=0x996aeb0, instance=0x99c0dc0) at src/modules/rlm_perl/rlm_perl.c:550
        inst = 0x99c0dc0
        end_AV = 0xb71af0e2 <mod_detach>
        embed_c = 0x99c1fe0
        embed = 0x99c1fe0
        envp = 0x0
        xlat_name = 0x996af30 "perl"
        exitstatus = 0
        argc = 3
        cs = 0x996b1e8
        arg = "0"
#2  0x080664ea in find_module_instance (modules=0x994f660, askedname=0x996af30 "perl", do_link=true) at src/main/modules.c:687
        check_config_safe = true
        cs = 0x996aeb0
        name1 = 0x996af30 "perl"
        instname = 0x996af30 "perl"
        node = 0x99bfe88
        myNode = {
          name = "perl\000asswd\000t\000g\000ounting_response\000\001\000\000\000\000\000\000\000\001\000\000\000~8u\267\343\311\t\b\230\370\224\th\000\000\000\000\000\000\000\364\033\277\277h\033\277\277\330\033\277\277\030\370\224\t8\031z\267\000\300t\267\210\033\277\277\067\374r\267\330\033\277\277\030\370\224\t\354\363t\267\210\351w\267\000\000\000\000w\000\000\000\210\371\224\t\000\000\000\000\064\034\277\277\000\300t\267\270\033\277\277\307\374r\267\370\213\224\t\330\033\277\277`\000\000\000\230\037\065\267\377\377\377\377\000\020z\267\070\031z\267\210\371\224\t\020\034\277\277\000\300w\267(\034\277\277\346\220u\267\370\213\224\t\330\033\277\277"..., entry = 0x10, insthandle = 0x809ca01, mutex = 0xbfbf1c38, cs = 0x0, force = 184, 
          code = 3078178048, mh = 0x0}
        module_name = "rlm_perl\000d\000ess\000\000nts\000w\000\000\000Q\000\000\000\343\002\065\267`x\200\t\022\215x\267'\003u\267\206\272\004\b\020\363%\267͍x\267\375\337.\267\002$q\267\060\272T\267\002\000\000\000\345/N\267<\205M\267\066\000\000\000\000\020z\267\374\343t\267\001\000\000\000\204\217M\267$\225x\267 \335-\267\n\000\000\000\204\217M\267$\225x\267\204\217M\267\016\000\000\000\260\032\277\277- +\003\264\005de|\346t\267\354\363t\267i\315i\000=\255\071\r\310\356-\267\230=.\267$\225x\267\070\004\000\000\230\037\065\267\000\000\000\000\000\000\000\000\001\000\000\000\327\000\000\000\000\000\000\000\210\351w\267\206"...
#3  0x080686ef in modules_init (config=0x980ae00) at src/main/modules.c:1849
        name = 0x996af30 "perl"
        module = 0x99bea20
        subcs = 0x996aeb0
        ci = 0x996aeb0
        next = 0x996b950
        cs = 0x994f818
        modules = 0x994f660
#4  0x0806ff16 in main (argc=4, argv=0xbfbf1db4) at src/main/radiusd.c:370
        rcode = 0
        status = -1216737280
        argval = -1
        spawn_flag = false
        write_pid = false
        display_version = false
        flag = 0
        from_child = {-1, -1}
        autofree = 0x97f8038
pbalsianok commented 10 years ago

Works... Thank you