Hi List, I'm currently using freeradius 1.0.0 on Solaris 9, and I've come across a problem with regexec() in the paircmp() function of valuepair.c.
According to the man page for paircmp on Solaris 9: int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags); If nmatch is ... [non-zero] the pmatch argument must point to an array with at least nmatch elements. ... Offsets in pmatch[0] identify the substring that corresponds to the entire regular expression. Unused elements of pmatch up to pmatch[nmatch-1] will be filled with -1. However, in valuepair.c we have: regmatch_t rxmatch[9]; compare = regexec(®, (char *)auth_item->strvalue, 16, rxmatch, 0); Ie nmatch is 16, but the size of the pmatch array is only 9. This causes a bus error in the call to regfree() when I try to match a regular expression is users. The problem is corrected when I make rxmatch 17 elements rather than 9, corresponding to the nmatch value 16. Is this a peculiar problem to Solaris 9, or have others had this issue? I also notice that this code has changed since 0.9.3. Regards, Michael - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html