mhonek / rpms / openldap

Forked from rpms/openldap 3 years ago
Clone
Blob Blame History Raw
--- openldap-2.4.18/servers/slapd/back-ldif/ldif.c.orig	2009-09-24 09:46:01.000000000 +0200
+++ openldap-2.4.18/servers/slapd/back-ldif/ldif.c	2009-09-24 12:41:09.000000000 +0200
@@ -593,9 +593,12 @@ typedef struct bvlist {
 	char *trunc;	/* filename was truncated here */
 	int  inum;		/* num from "attr={num}" in filename, or INT_MIN */
 	char savech;	/* original char at *trunc */
-	char fname;		/* variable length array BVL_NAME(bvl) = &fname */
-#	define BVL_NAME(bvl) ((char *) (bvl) + offsetof(bvlist, fname))
-#	define BVL_SIZE(namelen) (sizeof(bvlist) + (namelen))
+	char *fname;		/* variable length array BVL_NAME(bvl) = &fname */
+	//char fname;		/* variable length array BVL_NAME(bvl) = &fname */
+#	define BVL_NAME(bvl) ((bvl)->fname)
+#	define BVL_SIZE(namelen) (sizeof(bvlist))
+//#	define BVL_NAME(bvl) ((char *) (bvl) + offsetof(bvlist, fname))
+//#	define BVL_SIZE(namelen) (sizeof(bvlist) + (namelen))
 } bvlist;
 
 static int
@@ -710,6 +713,7 @@ ldif_readdir(
 				*fname_maxlenp = fname_len;
 
 			bvl = SLAP_MALLOC( BVL_SIZE( fname_len ) );
+			bvl->fname = SLAP_MALLOC( fname_len+1 );
 			if ( bvl == NULL ) {
 				rc = LDAP_OTHER;
 				save_errno = errno;