--- 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;