rlm_dbm_parser refuses to create a users.dbm file where both the list of check items *and* the list of reply-items are empty (this is perfectly legal and allowed when one uses the files module). To reproduce: feed the following file to rlm_dbm_parser: #---begin users.dbm.src dummy_user ; ; #---end or #---begin users.dbm.src dummy_user ; #---end Then, attempt to create users.dbm: rlm_dbm_parser -c -i users.dbm.src -o users.dbm Notice how it says 'Records loaded: 0' Desired behavior is 'Record loaded: 1' A desired users.dbm file *can* be created by calling libdbm create/insert routines from a custom C program, by providing the username as key and the string "\n\n" as content (each '\n' denotes an empty list of check, and respectively, reply items). Once created, the users.dbm works fine with the actual freeradius server (radiusd). The problem is that, before inserting a record, rlm_dbm_parser checks the length of the content field, and skips insertion if length is less than 3 bytes. To be able to create a list of users w/o check and reply items, the minimum content length should be reduced to 2 bytes (for the two '\n' characters as described above). The following one-liner patch (against snapshot-20060730) fixes the bug (also submitted via bugzilla as #380): diff -NarU5 freeradius-snapshot-20060730.orig/src/modules/rlm_dbm/rlm_dbm_parser.c freeradius-snapshot-20060730.rlmfix/src/modules/rlm_dbm/rlm_dbm_parser.c --- freeradius-snapshot-20060730.orig/src/modules/rlm_dbm/rlm_dbm_parser.c 2006-03-16 11:47:43.000000000 -0500 +++ freeradius-snapshot-20060730.rlmfix/src/modules/rlm_dbm/rlm_dbm_parser.c 2006-07-30 17:14:00.000000000 -0400 @@ -153,11 +153,11 @@ static int storecontent (const char * username) { datum d,k; int res; - if ( pdb == NULL || concntr < 3 ) return 1; + if ( pdb == NULL || concntr < 2 ) return 1; DOUT2("store:\n%s\ncontent:\n%s",username,content); d.dptr = content; d.dsize = concntr + 1;