diff -urN openradius-0.9.9/modules/radldap/radldap.c openradius-0.9.9-ldapdn/modules/radldap/radldap.c
--- openradius-0.9.9/modules/radldap/radldap.c	Fri Jun  6 14:06:10 2003
+++ openradius-0.9.9-ldapdn/modules/radldap/radldap.c	Thu Nov 18 22:02:53 2004
@@ -345,9 +345,9 @@
 	static char dbgbuf[MAPF_LINELEN];
 	struct timeval tv;
 	LDAPMessage *res, *ent;
-	struct berval **vals, **v;
+	struct berval **vals, **v, bv;
 	U_INT32_T *o;
-	char *s;
+	char *s, bv_buf[1024];
 	int n, m, cnt;
 
 	o = msgbuf + 2; cnt = 0;
@@ -378,10 +378,49 @@
 	    for(n = 0; n < map->entries; n++) {
 
 		vals = ldap_get_values_len(ld, ent, map->ldap_atrs[n]);
-		if (!vals) continue;
 
 		if (debug) fprintf(stderr, "         Object's values for %s:\n",
 				   map->ldap_atrs[n]);
+		if (!vals) {
+		    if (strcasecmp(map->ldap_atrs[n], "dn") == 0) {
+			/* DN holen und kopieren */
+			s = ldap_get_dn(ld, ent);
+			bv.bv_len = strlen(s);
+			bv.bv_val = bv_buf;
+			strcpy(bv_buf, s);
+			ldap_memfree(s);
+
+			if (debug) {
+				m = bv.bv_len; 
+				if (m > MAPF_LINELEN - 1) m = MAPF_LINELEN - 1;
+				memcpy(dbgbuf, bv.bv_val, m); dbgbuf[m] = 0;
+				fprintf(stderr, "             %s (len %ld)\n", 
+					dbgbuf, bv.bv_len);
+			}
+			
+			/* Check if there's room, considering current
+			 * and new size */
+			m = bv.bv_len;
+			if (((o - msgbuf + 
+			      4 + ((m + 3) >> 2)) << 2) >= C_MAX_MSGSIZE) {
+
+				fprintf(stderr, "radldap: No more room for "
+						"attribute '%s', len %d!\n",
+					map->ldap_atrs[n], m);
+				break;
+			}
+
+			/* Write attribute to message buffer and advance ptr */
+			o[0] = htonl(map->spcs[n]);
+			o[1] = htonl(map->vnds[n]);
+			o[2] = htonl(map->atrs[n]);
+			o[3] = htonl(m);
+			memcpy(&(o[4]), bv.bv_val, m);
+			o += 4 + ((m + 3) >> 2);
+		    }
+		    
+		    continue;
+		}
 
 		for(v = vals; *v; v++) {
 			if (debug) {
diff -urN openradius-0.9.9/raddb/modules/radldap.attrmap openradius-0.9.9-ldapdn/raddb/modules/radldap.attrmap
--- openradius-0.9.9/raddb/modules/radldap.attrmap	Fri Sep 20 13:02:52 2002
+++ openradius-0.9.9-ldapdn/raddb/modules/radldap.attrmap	Thu Nov 18 22:09:08 2004
@@ -41,3 +41,7 @@
 radiusIdleTimeout		102	0	28
 radiusPortLimit			102	0	62
 
+# Map DN of object(s) found to str, for subsequent binding
+
+#dn				100	0	4
+
