comparison src/eldap.c @ 384:bbff43aa5eb7 r21-2-7

Import from CVS: tag r21-2-7
author cvs
date Mon, 13 Aug 2007 11:08:24 +0200
parents cc15677e0335
children aabb7f5b1c81
comparison
equal deleted inserted replaced
383:6a50c6a581a5 384:bbff43aa5eb7
24 24
25 /* This file provides lisp primitives for access to an LDAP library 25 /* This file provides lisp primitives for access to an LDAP library
26 conforming to the API defined in RFC 1823. 26 conforming to the API defined in RFC 1823.
27 It has been tested with: 27 It has been tested with:
28 - UMich LDAP 3.3 (http://www.umich.edu/~dirsvcs/ldap/) 28 - UMich LDAP 3.3 (http://www.umich.edu/~dirsvcs/ldap/)
29 - OpenLDAP 1.0.3 (http://www.openldap.org/)
29 - Netscape's LDAP SDK 1.0 (http://developer.netscape.com) */ 30 - Netscape's LDAP SDK 1.0 (http://developer.netscape.com) */
30 31
31 32
32 #include <config.h> 33 #include <config.h>
33 #include "lisp.h" 34 #include "lisp.h"
34 #include "opaque.h" 35 #include "opaque.h"
35 #include "sysdep.h" 36 #include "sysdep.h"
37 #include "buffer.h"
36 38
37 #include <errno.h> 39 #include <errno.h>
38 40
39 #include "eldap.h" 41 #include "eldap.h"
40 42
242 } 244 }
243 /* Bind DN */ 245 /* Bind DN */
244 else if (EQ (keyword, Qbinddn)) 246 else if (EQ (keyword, Qbinddn))
245 { 247 {
246 CHECK_STRING (value); 248 CHECK_STRING (value);
247 ldap_binddn = alloca (XSTRING_LENGTH (value) + 1); 249 GET_C_STRING_OS_DATA_ALLOCA (value, ldap_binddn);
248 strcpy (ldap_binddn, (char *)XSTRING_DATA (value));
249 } 250 }
250 /* Password */ 251 /* Password */
251 else if (EQ (keyword, Qpasswd)) 252 else if (EQ (keyword, Qpasswd))
252 { 253 {
253 CHECK_STRING (value); 254 CHECK_STRING (value);
254 ldap_passwd = alloca (XSTRING_LENGTH (value) + 1); 255 GET_C_STRING_OS_DATA_ALLOCA (value, ldap_passwd);
255 strcpy (ldap_passwd, (char *)XSTRING_DATA (value));
256 } 256 }
257 /* Deref */ 257 /* Deref */
258 else if (EQ (keyword, Qderef)) 258 else if (EQ (keyword, Qderef))
259 { 259 {
260 if (EQ (value, Qnever)) 260 if (EQ (value, Qnever))
452 i = 0; 452 i = 0;
453 EXTERNAL_LIST_LOOP (attrs, attrs) 453 EXTERNAL_LIST_LOOP (attrs, attrs)
454 { 454 {
455 Lisp_Object current = XCAR (attrs); 455 Lisp_Object current = XCAR (attrs);
456 CHECK_STRING (current); 456 CHECK_STRING (current);
457 ldap_attributes[i] = 457 GET_C_STRING_OS_DATA_ALLOCA (current, ldap_attributes[i]);
458 alloca_array (char, 1 + XSTRING_LENGTH (current));
459 /* XSTRING_LENGTH is increased by one in order to copy the final 0 */
460 memcpy (ldap_attributes[i],
461 XSTRING_DATA (current), 1 + XSTRING_LENGTH (current));
462 ++i; 458 ++i;
463 } 459 }
464 ldap_attributes[i] = NULL; 460 ldap_attributes[i] = NULL;
465 } 461 }
466 462