Documentation/Installation/RADIUS: rlm-ldap_getdn.patch
| File rlm-ldap_getdn.patch, 1.5 kB (added by alex, 9 months ago) |
|---|
-
freeradius-1.1.3src/modules/rlm_ldap/rlm_ldap.c
old new 1097 1097 LDAPMessage *result = NULL; 1098 1098 LDAPMessage *msg = NULL; 1099 1099 char **vals; 1100 char *str; 1100 1101 int conn_id = -1; 1101 1102 LDAP_CONN *conn; 1102 1103 … … 1133 1134 ldap_free_urldesc(ldap_url); 1134 1135 return 0; 1135 1136 } 1137 if ( strcmp(ldap_url->lud_attrs[0], "dn") == 0 ) { 1138 strncpy(ldap_url->lud_attrs[0],"1.1\0",4); 1139 } 1136 1140 if ((res = perform_search(inst, conn, ldap_url->lud_dn, ldap_url->lud_scope, ldap_url->lud_filter, ldap_url->lud_attrs, &result)) != RLM_MODULE_OK){ 1137 1141 if (res == RLM_MODULE_NOTFOUND){ 1138 1142 DEBUG("rlm_ldap: Search returned not found"); … … 1152 1156 ldap_release_conn(conn_id,inst->conns); 1153 1157 return 0; 1154 1158 } 1155 if ((vals = ldap_get_values(conn->ld, msg, ldap_url->lud_attrs[0])) != NULL) { 1159 if ( strcmp(ldap_url->lud_attrs[0], "1.1") == 0 ) { 1160 str = ldap_get_dn(conn->ld, msg); 1161 ret = strlen(str); 1162 if (ret > freespace){ 1163 DEBUG("rlm_ldap: Insufficient string space"); 1164 ldap_free_urldesc(ldap_url); 1165 ldap_memfree(str); 1166 ldap_msgfree(result); 1167 ldap_release_conn(conn_id,inst->conns); 1168 return 0; 1169 } 1170 DEBUG("rlm_ldap: Adding dn as attribute, value: %s",str); 1171 strncpy(out,str,ret); 1172 ldap_memfree(str); 1173 } 1174 else if ((vals = ldap_get_values(conn->ld, msg, ldap_url->lud_attrs[0])) != NULL) { 1156 1175 ret = strlen(vals[0]); 1157 1176 if (ret > freespace){ 1158 1177 DEBUG("rlm_ldap: Insufficient string space");
