diff src/eldap.c @ 327:03446687b7cc r21-0-61

Import from CVS: tag r21-0-61
author cvs
date Mon, 13 Aug 2007 10:48:16 +0200
parents c6de09ad3017
children 7347b34c275b
line wrap: on
line diff
--- a/src/eldap.c	Mon Aug 13 10:47:36 2007 +0200
+++ b/src/eldap.c	Mon Aug 13 10:48:16 2007 +0200
@@ -26,6 +26,7 @@
    conforming to the API defined in RFC 1823.
    It has been tested with:
    - UMich LDAP 3.3 (http://www.umich.edu/~dirsvcs/ldap/)
+   - OpenLDAP 1.0.3 (http://www.openldap.org/)
    - Netscape's LDAP SDK 1.0 (http://developer.netscape.com) */
 
 
@@ -33,6 +34,7 @@
 #include "lisp.h"
 #include "opaque.h"
 #include "sysdep.h"
+#include "buffer.h"
 
 #include <errno.h>
 
@@ -244,15 +246,13 @@
       else if (EQ (keyword, Qbinddn))
         {
           CHECK_STRING (value);
-          ldap_binddn = alloca (XSTRING_LENGTH (value) + 1);
-          strcpy (ldap_binddn, (char *)XSTRING_DATA (value));
+          GET_C_STRING_OS_DATA_ALLOCA (value, ldap_binddn);
         }
       /* Password */
       else if (EQ (keyword, Qpasswd))
         {
           CHECK_STRING (value);
-          ldap_passwd = alloca (XSTRING_LENGTH (value) + 1);
-          strcpy (ldap_passwd, (char *)XSTRING_DATA (value));
+          GET_C_STRING_OS_DATA_ALLOCA (value, ldap_passwd);
         }
       /* Deref */
       else if (EQ (keyword, Qderef))
@@ -454,11 +454,7 @@
 	{
 	  Lisp_Object current = XCAR (attrs);
 	  CHECK_STRING (current);
-	  ldap_attributes[i] =
-	    alloca_array (char, 1 + XSTRING_LENGTH (current));
-          /* XSTRING_LENGTH is increased by one in order to copy the final 0 */
-	  memcpy (ldap_attributes[i],
-		  XSTRING_DATA (current), 1 + XSTRING_LENGTH (current));
+          GET_C_STRING_OS_DATA_ALLOCA (current, ldap_attributes[i]);
 	  ++i;
 	}
       ldap_attributes[i] = NULL;