mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Fix file descriptor leaks in pg_upgrade in failure code paths.
This commit is contained in:
		
							parent
							
								
									51c0124481
								
							
						
					
					
						commit
						d367d41d66
					
				| @ -515,9 +515,11 @@ check_for_isn_and_int8_passing_mismatch(ClusterInfo *cluster) | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 			fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		fclose(script); | ||||
| 		pg_log(PG_REPORT, "fatal\n"); | ||||
| 		pg_log(PG_FATAL, | ||||
| 			   "| Your installation contains \"/contrib/isn\" functions\n" | ||||
| @ -616,9 +618,11 @@ check_for_reg_data_type_usage(ClusterInfo *cluster) | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		fclose(script); | ||||
| 		pg_log(PG_REPORT, "fatal\n"); | ||||
| 		pg_log(PG_FATAL, | ||||
| 			   "| Your installation contains one of the reg* data types in\n" | ||||
|  | ||||
| @ -302,7 +302,10 @@ pg_scandir_internal(const char *dirname, | ||||
| 						(size_t) ((name_num + 1) * sizeof(struct dirent *))); | ||||
| 
 | ||||
| 			if (*namelist == NULL) | ||||
| 			{ | ||||
| 				closedir(dirdesc); | ||||
| 				return -1; | ||||
| 			} | ||||
| 
 | ||||
| 			entrysize = sizeof(struct dirent) - sizeof(direntry->d_name) + | ||||
| 				strlen(direntry->d_name) + 1; | ||||
| @ -310,7 +313,10 @@ pg_scandir_internal(const char *dirname, | ||||
| 			(*namelist)[name_num] = (struct dirent *) malloc(entrysize); | ||||
| 
 | ||||
| 			if ((*namelist)[name_num] == NULL) | ||||
| 			{ | ||||
| 				closedir(dirdesc); | ||||
| 				return -1; | ||||
| 			} | ||||
| 
 | ||||
| 			memcpy((*namelist)[name_num], direntry, entrysize); | ||||
| 
 | ||||
|  | ||||
| @ -144,11 +144,9 @@ get_major_server_version(ClusterInfo *cluster) | ||||
| 	if (fscanf(version_fd, "%63s", cluster->major_version_str) == 0 || | ||||
| 		sscanf(cluster->major_version_str, "%d.%d", &integer_version, | ||||
| 			   &fractional_version) != 2) | ||||
| 	{ | ||||
| 		pg_log(PG_FATAL, "could not get version from %s\n", datadir); | ||||
| 		fclose(version_fd); | ||||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	fclose(version_fd); | ||||
| 
 | ||||
| 	return (100 * integer_version + fractional_version) * 100; | ||||
| } | ||||
|  | ||||
| @ -62,10 +62,11 @@ new_9_0_populate_pg_largeobject_metadata(ClusterInfo *cluster, bool check_mode) | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		if (!check_mode) | ||||
| 			fclose(script); | ||||
| 		report_status(PG_WARNING, "warning"); | ||||
| 		if (check_mode) | ||||
| 			pg_log(PG_WARNING, "\n" | ||||
|  | ||||
| @ -87,9 +87,11 @@ old_8_3_check_for_name_data_type_usage(ClusterInfo *cluster) | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		fclose(script); | ||||
| 		pg_log(PG_REPORT, "fatal\n"); | ||||
| 		pg_log(PG_FATAL, | ||||
| 			   "| Your installation contains the \"name\" data type in\n" | ||||
| @ -175,9 +177,11 @@ old_8_3_check_for_tsquery_usage(ClusterInfo *cluster) | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		fclose(script); | ||||
| 		pg_log(PG_REPORT, "fatal\n"); | ||||
| 		pg_log(PG_FATAL, | ||||
| 			   "| Your installation contains the \"tsquery\" data type.\n" | ||||
| @ -314,10 +318,11 @@ old_8_3_rebuild_tsvector_tables(ClusterInfo *cluster, bool check_mode) | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		if (!check_mode) | ||||
| 			fclose(script); | ||||
| 		report_status(PG_WARNING, "warning"); | ||||
| 		if (check_mode) | ||||
| 			pg_log(PG_WARNING, "\n" | ||||
| @ -424,10 +429,11 @@ old_8_3_invalidate_hash_gin_indexes(ClusterInfo *cluster, bool check_mode) | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		if (!check_mode) | ||||
| 			fclose(script); | ||||
| 		report_status(PG_WARNING, "warning"); | ||||
| 		if (check_mode) | ||||
| 			pg_log(PG_WARNING, "\n" | ||||
| @ -553,10 +559,11 @@ old_8_3_invalidate_bpchar_pattern_ops_indexes(ClusterInfo *cluster, | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	if (found) | ||||
| 	{ | ||||
| 		if (!check_mode) | ||||
| 			fclose(script); | ||||
| 		report_status(PG_WARNING, "warning"); | ||||
| 		if (check_mode) | ||||
| 			pg_log(PG_WARNING, "\n" | ||||
| @ -672,7 +679,8 @@ old_8_3_create_sequence_script(ClusterInfo *cluster) | ||||
| 
 | ||||
| 		PQfinish(conn); | ||||
| 	} | ||||
| 	if (found) | ||||
| 
 | ||||
| 	if (script) | ||||
| 		fclose(script); | ||||
| 
 | ||||
| 	check_ok(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user