On Mar 6, 2008, at 12:16 AM, Alan DeKok wrote:

Zach Lowry wrote:
I think I may have gotten a little bit closer to uncovering my problem. I installed FreeRadius 1.1.7 on a FreeBSD SPARC64 machine, and got some
debugging output. I then tried it again on my OpenBSD SPARC64 machine
with the debugging turned all the way up:
...
ldap_connect_timeout: fd: 7 tm: 4294967296 async: 0
                                ^^^^^^^^^^
                                What is this doing here?

That looks like "now", in time_t format. It may have been taken from
the wrong thing, tho...

It's actually 2^32. Since I can accurately set the time to -1 or 0, I believe that the bug is coming from one library writing a 64-bit value and another reading it as a 32-bit integer.


Could this be a 64-bit portability issue in rlm_ldap?

Likely. See "net_timeout" in the CONF_PARSER module_config structure. It's parsing integers into a "tv_sec", which is type time_t. The data should really be parsed into an "int" type, and that later assigned to a
tv_sec.

OK, hardcoding values fixes it. Like this:

if (ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, 10) != LDAP_OPT_SUCCESS) { radlog(L_ERR, "rlm_ldap: Could not set LDAP_OPT_NETWORK_TIMEOUT %ld.%ld", inst->net_timeout.tv_sec, inst- >net_timeou
t.tv_usec);
        }
if (ldap_set_option(ld, LDAP_OPT_TIMELIMIT, 10) != LDAP_OPT_SUCCESS) { radlog(L_ERR, "rlm_ldap: Could not set LDAP_OPT_TIMELIMIT %d", inst->timelimit);
        }

I'll work on a better long-term solution.


  Alan DeKok.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/ users.html

-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to