[comp.sources.bugs] PAX leaves archives world writeable

cudcv@warwick.ac.uk (Rob McMahon) (02/21/89)

Pax creating an archive with a -f flag leaves the archive mode 666.  It calls
umask(0) early on, storing the old umask in `mask', but doesn't use this when
creating the archive.  I believe this patch fixes the problem, and also a
similar one on systems not having the mkdir system call.

Rob

RCS file: fileio.c,v
retrieving revision 1.1
diff -c -r1.1 fileio.c
*** /tmp/,RCSt1a01285	Tue Feb 21 15:04:47 1989
--- fileio.c	Tue Feb 21 14:37:09 1989
***************
*** 93,101 ****
  	archivefd = open(ar_file, O_RDONLY | O_BINARY);
  	bufend = bufidx = bufstart;	/* set up for initial read */
      } else if (mode == AR_WRITE) {
! 	archivefd = open(ar_file, O_WRONLY|O_TRUNC|O_CREAT|O_BINARY, 0666);
      } else if (mode == AR_APPEND) {
! 	archivefd = open(ar_file, O_RDWR | O_BINARY, 0666);
  	bufend = bufidx = bufstart;	/* set up for initial read */
      }
  
--- 93,102 ----
  	archivefd = open(ar_file, O_RDONLY | O_BINARY);
  	bufend = bufidx = bufstart;	/* set up for initial read */
      } else if (mode == AR_WRITE) {
! 	archivefd = open(ar_file, O_WRONLY|O_TRUNC|O_CREAT|O_BINARY,
! 			 0666 & ~mask);
      } else if (mode == AR_APPEND) {
! 	archivefd = open(ar_file, O_RDWR | O_BINARY, 0666 & ~mask);
  	bufend = bufidx = bufstart;	/* set up for initial read */
      }
  

RCS file: port.c,v
retrieving revision 1.1
diff -c -r1.1 port.c
*** /tmp/,RCSt1a01291	Tue Feb 21 15:06:27 1989
--- port.c	Mon Feb 20 23:07:31 1989
***************
*** 114,121 ****
  
      case 0:			/* Child process */
  
! 	status = umask(0);	/* Get current umask */
! 	status = umask(status | (0777 & ~dmode));	/* Set for mkdir */
  	execl("/bin/mkdir", "mkdir", dpath, (char *) 0);
  	_exit(-1);		/* Can't exec /bin/mkdir */
  
--- 114,120 ----
  
      case 0:			/* Child process */
  
! 	(void) umask(mask | (0777 & ~dmode));	/* Set for mkdir */
  	execl("/bin/mkdir", "mkdir", dpath, (char *) 0);
  	_exit(-1);		/* Can't exec /bin/mkdir */
  
-- 
UUCP:   ...!mcvax!ukc!warwick!cudcv	PHONE:  +44 203 523037
JANET:  cudcv@uk.ac.warwick             ARPA:   cudcv@warwick.ac.uk
Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England