{
DIR *dirP; /* open directory */
struct dirent *entryP; /* directory entry */
- char srcname[1024], tgtname[1024];
+ char srcname[PATH_MAX], tgtname[PATH_MAX];
int srclen, tgtlen;
int rc;
if (rc < 0 && errno == EEXIST && repl) {
rc = EraseObject(targetP, repl);
if (rc)
- return rc;
+ {
+ closedir(dirP);
+ return rc;
+ }
rc = mkdir(targetP, statP->st_mode & 0777);
}
if (rc < 0) {
}
/* prepare source and target names */
- strcpy(srcname, sourceP);
+ snprintf(srcname, PATH_MAX, "%s", sourceP);
srclen = strlen(srcname);
if (srcname[srclen - 1] != '/')
srcname[srclen++] = '/';
- strcpy(tgtname, targetP);
+ snprintf(tgtname, PATH_MAX, "%s", targetP);
tgtlen = strlen(tgtname);
if (tgtname[tgtlen - 1] != '/')
tgtname[tgtlen++] = '/';