setuid/setgid bits to ensure that there is no race
condition. They are then correctly updated after
the lchown. Thanks to snabb@epipe.fi for pointing
- this out */
+ this out. We also set it initially without group
+ access because of a similar race condition. */
fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL,
- file->mode & ACCESSPERMS);
+ file->mode & INITACCESSPERMS);
if (fd2 == -1 && relative_paths && errno == ENOENT &&
create_directory_path(fnametmp) == 0) {
fd2 = do_open(fnametmp,O_WRONLY|O_CREAT|O_EXCL,
- file->mode & ACCESSPERMS);
+ file->mode & INITACCESSPERMS);
}
if (fd2 == -1) {
- rprintf(FERROR,"open %s : %s\n",fnametmp,strerror(errno));
+ rprintf(FERROR,"cannot create %s : %s\n",fnametmp,strerror(errno));
receive_data(f_in,buf,-1,NULL,file->length);
if (buf) unmap_file(buf);
if (fd1 != -1) close(fd1);