diff -ur globus_common-10.2.orig/library/globus_common.h.in globus_common-10.2/library/globus_common.h.in --- globus_common-10.2.orig/library/globus_common.h.in 2006-01-19 06:54:14.000000000 +0100 +++ globus_common-10.2/library/globus_common.h.in 2009-06-03 16:03:07.000000000 +0200 @@ -115,11 +115,6 @@ #endif #endif -#if !defined(MAXPATHLEN) -# include -# define MAXPATHLEN PATH_MAX -#endif - /* most network-related functions (getpeername, getsockname,...) have an int* as argument, except AIX which uses size_t*. This will masquerade the difference. */ diff -ur globus_common-10.2.orig/library/globus_libc.c globus_common-10.2/library/globus_libc.c --- globus_common-10.2.orig/library/globus_libc.c 2008-04-05 05:09:41.000000000 +0200 +++ globus_common-10.2/library/globus_libc.c 2009-06-03 16:39:35.000000000 +0200 @@ -46,10 +46,7 @@ #include #endif -#if !defined(MAXPATHLEN) -# include -# define MAXPATHLEN PATH_MAX -#endif +#include /* For offsetof() */ /* HPUX 10.20 headers do not define this */ #if defined(TARGET_ARCH_HPUX) @@ -2218,7 +2215,7 @@ static globus_mutex_t gethomedir_mutex; static int initialized = GLOBUS_FALSE; static struct passwd pw; - static char homedir[MAXPATHLEN]; + static char * homedir; static int homedir_len = 0; static char buf[1024]; int rc; @@ -2258,7 +2255,8 @@ if (!rc && p) { len = strlen(p); - if (len+1 < MAXPATHLEN) + homedir = globus_malloc(len + 1); + if (homedir) { memcpy(homedir, p, len); homedir[len] = '\0'; @@ -2556,9 +2554,6 @@ struct dirent *tmpdir, *entry; int save_errno; - entry = (struct dirent *) globus_malloc(sizeof(struct dirent) - + MAXPATHLEN - + 1); globus_libc_lock(); tmpdir = readdir(dirp); @@ -2570,13 +2565,15 @@ globus_libc_unlock(); - globus_free(entry); - errno = save_errno; return -1; } + entry = (struct dirent *) globus_malloc(offsetof(struct dirent, d_name) + + strlen(tmpdir->d_name) + + 1); + /* copy returned buffer into data structure */ entry->d_ino = tmpdir->d_ino; # if defined(GLOBUS_HAVE_DIRENT_OFF) @@ -2619,8 +2616,8 @@ # if defined(GLOBUS_HAVE_READDIR_R_3) { int rc = 0; - struct dirent *entry = globus_malloc(sizeof(struct dirent) - + MAXPATHLEN + struct dirent *entry = globus_malloc(offsetof(struct dirent, d_name) + + NAME_MAX + 1); rc = readdir_r(dirp, entry, result); @@ -2634,8 +2631,8 @@ } # elif defined(GLOBUS_HAVE_READDIR_R_2) { - struct dirent *entry = globus_malloc(sizeof(struct dirent) - + MAXPATHLEN + struct dirent *entry = globus_malloc(offsetof(struct dirent, d_name) + + NAME_MAX + 1); int rc=0;