hello, everybody.
my radius use a rlm_perl module, wich open and write some
informations to files. also it use rlm_detail but without locking.
2 days ago i add second rlm_detail to config with option
"locking = yes".
since i got 2 files with corrupted datas which accessed by rlm_perl.
i think bug is in rlm_detail.c. there is no close() after successful
open and failed filelock!
198: /*
199: * Open & create the file, with the given permissions.
200: */
201: if ((outfd = open(buffer, O_WRONLY | O_APPEND | O_CREAT,
202: inst->detailperm)) < 0) {
203: radlog(L_ERR, "rlm_detail: Couldn't open file %s: %s",
204: buffer, strerror(errno));
205: return RLM_MODULE_FAIL;
206: }
...
233: if (!locked && inst->locking && lock_count >= 80) {
234: radlog(L_ERR, "rlm_detail: Failed to aquire filelock for %s,
givingup",
235: buffer);
236: return RLM_MODULE_FAIL;
237: }
we need close outfd right before "return RLM_MODULE_FAIL;" at line
236.
Mike.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html