--- lib/mcrypt_extra.c.old 2003-01-19 19:24:24.000000000 +0100 +++ lib/mcrypt_extra.c 2006-02-17 09:36:25.000000000 +0100 @@ -40,7 +40,8 @@ char *result; struct dirent *ret = NULL; #ifdef HAVE_READDIR_R - struct dirent ret2[sizeof(struct dirent) + MAXPATHLEN]; + struct dirent *ret2 = NULL; + ret2 = malloc(sizeof(struct dirent) + MAXPATHLEN); #endif #ifdef HAVE_READDIR_R @@ -48,10 +49,17 @@ #else ret = readdir(dirstream); #endif - if (ret == NULL) + if (ret == NULL) { +#ifdef HAVE_READDIR_R + if(ret2 != NULL) free(ret2); +#endif return NULL; + } result = strdup(ret->d_name); +#ifdef HAVE_READDIR_R + if(ret2 != NULL) free(ret2); +#endif if (result == NULL) { return NULL; }