Index: src/ftpd.c =================================================================== RCS file: /cvsroot/wu-ftpd-stable/src/ftpd.c,v retrieving revision 1.21 diff -c -r1.21 ftpd.c *** src/ftpd.c 1999/05/20 16:37:40 1.21 --- src/ftpd.c 1999/08/25 02:31:08 *************** *** 1211,1216 **** --- 1211,1223 ---- return path; } + char *mapping_getcwd(char *path, size_t size) + { + strncpy(path, mapped_path, size); + path[size-1] = '\0'; + return path; + } + /* Make these globals rather than local to mapping_chdir to avoid stack overflow */ char pathspace[ MAXPATHLEN ]; char old_mapped_path[ MAXPATHLEN ]; *************** *** 1244,1251 **** /* append the dir part with a leading / unless at root */ if( !(mapped_path[0] == '/' && mapped_path[1] == '\0') ) strcat( mapped_path, "/" ); ! strcat( mapped_path, dir ); } int --- 1251,1260 ---- /* append the dir part with a leading / unless at root */ if( !(mapped_path[0] == '/' && mapped_path[1] == '\0') ) + if (strlen(mapped_path) < sizeof(mapped_path)-1) strcat( mapped_path, "/" ); ! if (sizeof(mapped_path)-strlen(mapped_path) > 1) ! strncat( mapped_path, dir, sizeof(mapped_path)-strlen(mapped_path)-1 ); } int *************** *** 1293,1299 **** #define chdir(d) mapping_chdir(d) #define getwd(d) mapping_getwd(d) ! #define getcwd(d,u) mapping_getwd(d) #endif /* MAPPING_CHDIR */ --- 1302,1308 ---- #define chdir(d) mapping_chdir(d) #define getwd(d) mapping_getwd(d) ! #define getcwd(d,u) mapping_getcwd((d),(u)) #endif /* MAPPING_CHDIR */