From: jik@aktis.COM (Jonathan I. Kamens)
Subject: tar 1.11.1: more allocations without checking return value
Organization: Gnus Not Usenet
Distribution: gnu
Date: Wed, 30 Dec 1992 11:09:26 GMT

There are a number of places where memory is allocated without
checking its return value.

*** 1.1	1992/12/30 20:58:42
--- create.c	1992/12/30 21:04:49
***************
*** 943,949 ****
  	/* 
  	 * Make room for our scratch space -- initially is 10 elts long
  	 */
! 	sparsearray = (struct sp_array *) malloc(sp_array_size * sizeof(struct sp_array));
  	for (i = 0; i < sp_array_size; i++) {
  		sparsearray[i].offset = 0;
  		sparsearray[i].numbytes = 0;
--- 943,949 ----
  	/* 
  	 * Make room for our scratch space -- initially is 10 elts long
  	 */
! 	sparsearray = (struct sp_array *) ck_malloc(sp_array_size * sizeof(struct sp_array));
  	for (i = 0; i < sp_array_size; i++) {
  		sparsearray[i].offset = 0;
  		sparsearray[i].numbytes = 0;
***************
*** 1006,1012 ****
  		 * realloc the scratch area, since we've run out of room --
  		 */
  			sparsearray = (struct sp_array *) 
! 					realloc(sparsearray,
   						2 * sp_array_size * (sizeof(struct sp_array)));
  			sp_array_size *= 2;
  		}
--- 1006,1012 ----
  		 * realloc the scratch area, since we've run out of room --
  		 */
  			sparsearray = (struct sp_array *) 
! 					ck_realloc(sparsearray,
   						2 * sp_array_size * (sizeof(struct sp_array)));
  			sp_array_size *= 2;
  		}
*** 1.1	1992/12/30 21:06:47
--- diffarch.c	1992/12/30 21:04:48
***************
*** 542,548 ****
  /*	int		amt_read = 0;*/
  	int		size = filesize;
  
! 	buf = (char *) malloc(buf_size * sizeof (char));
  	
  	fill_in_sparse_array();
  	
--- 542,548 ----
  /*	int		amt_read = 0;*/
  	int		size = filesize;
  
! 	buf = (char *) ck_malloc(buf_size * sizeof (char));
  	
  	fill_in_sparse_array();
  	
***************
*** 563,569 ****
  		 * take care to not run out of room in our buffer
  		 */
  		while (buf_size < numbytes) {
! 			buf = (char *) realloc(buf, buf_size * 2 * sizeof(char));
  			buf_size *= 2;
  		}
  		while (numbytes > RECORDSIZE) {
--- 563,569 ----
  		 * take care to not run out of room in our buffer
  		 */
  		while (buf_size < numbytes) {
! 			buf = (char *) ck_realloc(buf, buf_size * 2 * sizeof(char));
  			buf_size *= 2;
  		}
  		while (numbytes > RECORDSIZE) {
***************
*** 641,647 ****
  	 * necessary
  	 */
  	sp_array_size = 10;
! 	sparsearray = (struct sp_array *) malloc(sp_array_size * sizeof(struct sp_array));
  
  	/*
  	 * there are at most five of these structures in the header
--- 641,647 ----
  	 * necessary
  	 */
  	sp_array_size = 10;
! 	sparsearray = (struct sp_array *) ck_malloc(sp_array_size * sizeof(struct sp_array));
  
  	/*
  	 * there are at most five of these structures in the header
***************
*** 673,679 ****
  				 *  scratch area - realloc it
   				 */
  				sparsearray = (struct sp_array *)
! 					realloc(sparsearray, 
  						sp_array_size*2*sizeof(struct sp_array));
  				sp_array_size *= 2;
  			}
--- 673,679 ----
  				 *  scratch area - realloc it
   				 */
  				sparsearray = (struct sp_array *)
! 					ck_realloc(sparsearray, 
  						sp_array_size*2*sizeof(struct sp_array));
  				sp_array_size *= 2;
  			}
*** 1.1	1992/12/30 21:06:12
--- extract.c	1992/12/30 21:04:48
***************
*** 213,219 ****
  	  */
  	 case LF_SPARSE:
  		 sp_array_size = 10;
! 		 sparsearray = (struct sp_array *) malloc(sp_array_size * sizeof(struct sp_array));
  		 for (i = 0; i < SPARSE_IN_HDR; i++) {
  			 sparsearray[i].offset = 
  				 from_oct(1+12, head->header.sp[i].offset);
--- 213,219 ----
  	  */
  	 case LF_SPARSE:
  		 sp_array_size = 10;
! 		 sparsearray = (struct sp_array *) ck_malloc(sp_array_size * sizeof(struct sp_array));
  		 for (i = 0; i < SPARSE_IN_HDR; i++) {
  			 sparsearray[i].offset = 
  				 from_oct(1+12, head->header.sp[i].offset);
***************
*** 243,249 ****
  					  * since we've run out of room --
  					  */
  						 sparsearray = (struct sp_array *) 
! 								 realloc(sparsearray,
  								 2 * sp_array_size * (sizeof(struct sp_array)));
  						 sp_array_size *= 2;
  					 }
--- 243,249 ----
  					  * since we've run out of room --
  					  */
  						 sparsearray = (struct sp_array *) 
! 								 ck_realloc(sparsearray,
  								 2 * sp_array_size * (sizeof(struct sp_array)));
  						 sp_array_size *= 2;
  					 }
***************
*** 355,361 ****
  			  * REAL interesting unless we do this.
  			  */
  			 namelen = strlen(skipcrud + current_file_name);
! 			 name = (char *) malloc((sizeof(char)) * namelen);
  			 bcopy(skipcrud+current_file_name, name, namelen);
  			 size = hstat.st_size;
  			 extract_sparse_file(fd, &size, hstat.st_size, name);
--- 355,361 ----
  			  * REAL interesting unless we do this.
  			  */
  			 namelen = strlen(skipcrud + current_file_name);
! 			 name = (char *) ck_malloc((sizeof(char)) * namelen);
  			 bcopy(skipcrud+current_file_name, name, namelen);
  			 size = hstat.st_size;
  			 extract_sparse_file(fd, &size, hstat.st_size, name);
***************
*** 652,659 ****
  
  		if (f_modified)
  		  goto set_filestat;
! 		tmp = (struct saved_dir_info *) malloc (sizeof (struct saved_dir_info));
! 		tmp->path = malloc (strlen (skipcrud + current_file_name) + 1);
  		strcpy (tmp->path, skipcrud + current_file_name);
  		tmp->mode = hstat.st_mode;
  		tmp->atime = hstat.st_atime;
--- 652,659 ----
  
  		if (f_modified)
  		  goto set_filestat;
! 		tmp = (struct saved_dir_info *) ck_malloc (sizeof (struct saved_dir_info));
! 		tmp->path = ck_malloc (strlen (skipcrud + current_file_name) + 1);
  		strcpy (tmp->path, skipcrud + current_file_name);
  		tmp->mode = hstat.st_mode;
  		tmp->atime = hstat.st_atime;
*** 1.1	1992/12/30 21:01:17
--- list.c	1992/12/30 21:04:47
***************
*** 387,393 ****
  		    : head->header.arch_name);
  	    if (current_file_name)
  	      free (current_file_name);
! 	    current_file_name = malloc (strlen (name) + 1);
  	    strcpy (current_file_name, name);
  
  	    name = (next_long_link
--- 387,393 ----
  		    : head->header.arch_name);
  	    if (current_file_name)
  	      free (current_file_name);
! 	    current_file_name = ck_malloc (strlen (name) + 1);
  	    strcpy (current_file_name, name);
  
  	    name = (next_long_link
***************
*** 395,401 ****
  		    : head->header.arch_linkname);
  	    if (current_link_name)
  	      free (current_link_name);
! 	    current_link_name = malloc (strlen (name) + 1);
  	    strcpy (current_link_name, name);
  	    
  	    next_long_link = next_long_name = 0;
--- 395,401 ----
  		    : head->header.arch_linkname);
  	    if (current_link_name)
  	      free (current_link_name);
! 	    current_link_name = ck_malloc (strlen (name) + 1);
  	    strcpy (current_link_name, name);
  	    
  	    next_long_link = next_long_name = 0;
*** 1.2	1992/12/14 18:46:23
--- tar.c	1992/12/30 21:04:46
***************
*** 304,310 ****
  
  	/* Set default option values */
  	blocking = DEFBLOCKING;		/* From Makefile */
! 	ar_files = (char **) malloc (sizeof (char *) * 10);
  	ar_files_len = 10;
  	n_ar_files = 0;
  	cur_ar_file = 0;
--- 304,310 ----
  
  	/* Set default option values */
  	blocking = DEFBLOCKING;		/* From Makefile */
! 	ar_files = (char **) ck_malloc (sizeof (char *) * 10);
  	ar_files_len = 10;
  	n_ar_files = 0;
  	cur_ar_file = 0;

Jonathan Kamens                                         jik@MIT.Edu
Aktis, Inc.                                 Moderator, news.answers

Newsgroups: gnu.utils.bug