mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[misc] fix some static analysis warnings
* Also improve fast-zeroing code and upgrade Bled to latest
This commit is contained in:
		
							parent
							
								
									f027e562b3
								
							
						
					
					
						commit
						69bf32dd33
					
				
					 8 changed files with 50 additions and 28 deletions
				
			
		|  | @ -680,6 +680,8 @@ int FAST_FUNC start_bunzip(bunzip_data **bdp, int in_fd, | ||||||
| 
 | 
 | ||||||
| 	/* Allocate bunzip_data.  Most fields initialize to zero. */ | 	/* Allocate bunzip_data.  Most fields initialize to zero. */ | ||||||
| 	bd = *bdp = xzalloc(i); | 	bd = *bdp = xzalloc(i); | ||||||
|  | 	if (bd == NULL) | ||||||
|  | 		return -1; | ||||||
| 
 | 
 | ||||||
| 	/* Setup input buffer */ | 	/* Setup input buffer */ | ||||||
| 	bd->in_fd = in_fd; | 	bd->in_fd = in_fd; | ||||||
|  | @ -743,6 +745,8 @@ unpack_bz2_stream(transformer_state_t *xstate) | ||||||
| 		return -1; | 		return -1; | ||||||
| 
 | 
 | ||||||
| 	outbuf = xmalloc(IOBUF_SIZE); | 	outbuf = xmalloc(IOBUF_SIZE); | ||||||
|  | 	if (outbuf == NULL) | ||||||
|  | 		return -1; | ||||||
| 	len = 0; | 	len = 0; | ||||||
| 	while (1) { /* "Process one BZ... stream" loop */ | 	while (1) { /* "Process one BZ... stream" loop */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1039,6 +1039,8 @@ inflate_unzip(transformer_state_t *xstate) | ||||||
| 	DECLARE_STATE; | 	DECLARE_STATE; | ||||||
| 
 | 
 | ||||||
| 	ALLOC_STATE; | 	ALLOC_STATE; | ||||||
|  | 	if (state == NULL) | ||||||
|  | 		return -1; | ||||||
| 
 | 
 | ||||||
| 	to_read = xstate->bytes_in; | 	to_read = xstate->bytes_in; | ||||||
| //	bytebuffer_max = 0x8000;
 | //	bytebuffer_max = 0x8000;
 | ||||||
|  | @ -1212,9 +1214,13 @@ unpack_gz_stream(transformer_state_t *xstate) | ||||||
| 	total = 0; | 	total = 0; | ||||||
| 
 | 
 | ||||||
| 	ALLOC_STATE; | 	ALLOC_STATE; | ||||||
|  | 	if (state == NULL) | ||||||
|  | 		return -1; | ||||||
| 	to_read = -1; | 	to_read = -1; | ||||||
| //	bytebuffer_max = 0x8000;
 | //	bytebuffer_max = 0x8000;
 | ||||||
| 	bytebuffer = xmalloc(bytebuffer_max); | 	bytebuffer = xmalloc(bytebuffer_max); | ||||||
|  | 	if (bytebuffer == NULL) | ||||||
|  | 		return -1; | ||||||
| 	gunzip_src_fd = xstate->src_fd; | 	gunzip_src_fd = xstate->src_fd; | ||||||
| 
 | 
 | ||||||
|  again: |  again: | ||||||
|  |  | ||||||
|  | @ -79,6 +79,8 @@ static ALWAYS_INLINE rc_t* rc_init(int fd) /*, int buffer_size) */ | ||||||
| 	rc_t *rc; | 	rc_t *rc; | ||||||
| 
 | 
 | ||||||
| 	rc = xzalloc(sizeof(*rc) + RC_BUFFER_SIZE); | 	rc = xzalloc(sizeof(*rc) + RC_BUFFER_SIZE); | ||||||
|  | 	if (rc == NULL) | ||||||
|  | 		return NULL; | ||||||
| 
 | 
 | ||||||
| 	rc->fd = fd; | 	rc->fd = fd; | ||||||
| 	/* rc->ptr = rc->buffer_end; */ | 	/* rc->ptr = rc->buffer_end; */ | ||||||
|  |  | ||||||
|  | @ -169,6 +169,8 @@ static uint32_t find_cdf_offset(int fd) | ||||||
| 	off_t end; | 	off_t end; | ||||||
| 	unsigned char *buf = xzalloc(PEEK_FROM_END); | 	unsigned char *buf = xzalloc(PEEK_FROM_END); | ||||||
| 
 | 
 | ||||||
|  | 	if (buf == NULL) | ||||||
|  | 		return 0; | ||||||
| 	end = lseek(fd, 0, SEEK_END); | 	end = lseek(fd, 0, SEEK_END); | ||||||
| 	end -= PEEK_FROM_END; | 	end -= PEEK_FROM_END; | ||||||
| 	if (end < 0) | 	if (end < 0) | ||||||
|  | @ -216,7 +218,8 @@ static uint32_t read_next_cdf(int fd, uint32_t cdf_offset, cdf_header_t *cdf_ptr | ||||||
| 
 | 
 | ||||||
| 	if (cdf_offset != BAD_CDF_OFFSET) { | 	if (cdf_offset != BAD_CDF_OFFSET) { | ||||||
| 		lseek(fd, cdf_offset + 4, SEEK_SET); | 		lseek(fd, cdf_offset + 4, SEEK_SET); | ||||||
| 		_read(fd, cdf_ptr->raw, CDF_HEADER_LEN); | 		if (_read(fd, cdf_ptr->raw, CDF_HEADER_LEN) != CDF_HEADER_LEN) | ||||||
|  | 			return 0; | ||||||
| 		FIX_ENDIANNESS_CDF(*cdf_ptr); | 		FIX_ENDIANNESS_CDF(*cdf_ptr); | ||||||
| 		cdf_offset += 4 + CDF_HEADER_LEN | 		cdf_offset += 4 + CDF_HEADER_LEN | ||||||
| 			+ cdf_ptr->formatted.file_name_length | 			+ cdf_ptr->formatted.file_name_length | ||||||
|  |  | ||||||
|  | @ -12,6 +12,8 @@ archive_handle_t* FAST_FUNC init_handle(void) | ||||||
| 
 | 
 | ||||||
| 	/* Initialize default values */ | 	/* Initialize default values */ | ||||||
| 	archive_handle = xzalloc(sizeof(archive_handle_t)); | 	archive_handle = xzalloc(sizeof(archive_handle_t)); | ||||||
|  | 	if (archive_handle == NULL) | ||||||
|  | 		return NULL; | ||||||
| 	archive_handle->file_header = xzalloc(sizeof(file_header_t)); | 	archive_handle->file_header = xzalloc(sizeof(file_header_t)); | ||||||
| 	archive_handle->action_header = header_skip; | 	archive_handle->action_header = header_skip; | ||||||
| 	archive_handle->action_data = data_skip; | 	archive_handle->action_data = data_skip; | ||||||
|  |  | ||||||
							
								
								
									
										29
									
								
								src/format.c
									
										
									
									
									
								
							
							
						
						
									
										29
									
								
								src/format.c
									
										
									
									
									
								
							|  | @ -1478,12 +1478,12 @@ static BOOL WriteDrive(HANDLE hPhysicalDrive, HANDLE hSourceImage) | ||||||
| { | { | ||||||
| 	BOOL s, ret = FALSE; | 	BOOL s, ret = FALSE; | ||||||
| 	LARGE_INTEGER li; | 	LARGE_INTEGER li; | ||||||
| 	DWORD rSize, wSize, xSize, BufSize; | 	DWORD i, rSize, wSize, xSize, BufSize; | ||||||
| 	uint64_t wb, target_size = hSourceImage?img_report.image_size:SelectedDrive.DiskSize; | 	uint64_t wb, target_size = hSourceImage?img_report.image_size:SelectedDrive.DiskSize; | ||||||
| 	int64_t bled_ret; | 	int64_t bled_ret; | ||||||
| 	uint8_t *buffer = NULL; | 	uint8_t* buffer = NULL; | ||||||
| 	uint8_t *cmp_buffer = NULL; | 	uint32_t zero_data, *cmp_buffer = NULL; | ||||||
| 	int i, *ptr, zero_data, throttle_fast_zeroing = 0; | 	int throttle_fast_zeroing = 0; | ||||||
| 
 | 
 | ||||||
| 	if (SelectedDrive.SectorSize < 512) { | 	if (SelectedDrive.SectorSize < 512) { | ||||||
| 		uprintf("Unexpected sector size (%d) - Aborting", SelectedDrive.SectorSize); | 		uprintf("Unexpected sector size (%d) - Aborting", SelectedDrive.SectorSize); | ||||||
|  | @ -1539,13 +1539,15 @@ static BOOL WriteDrive(HANDLE hPhysicalDrive, HANDLE hSourceImage) | ||||||
| 		// Clear buffer
 | 		// Clear buffer
 | ||||||
| 		memset(buffer, fast_zeroing ? 0xff : 0x00, BufSize); | 		memset(buffer, fast_zeroing ? 0xff : 0x00, BufSize); | ||||||
| 
 | 
 | ||||||
| 		cmp_buffer = (uint8_t*)_mm_malloc(BufSize, SelectedDrive.SectorSize); | 		if (fast_zeroing) { | ||||||
|  | 			cmp_buffer = (uint32_t*)_mm_malloc(BufSize, SelectedDrive.SectorSize); | ||||||
| 			if (cmp_buffer == NULL) { | 			if (cmp_buffer == NULL) { | ||||||
| 				FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | ERROR_NOT_ENOUGH_MEMORY; | 				FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | ERROR_NOT_ENOUGH_MEMORY; | ||||||
| 				uprintf("Could not allocate disk comparison buffer"); | 				uprintf("Could not allocate disk comparison buffer"); | ||||||
| 				goto out; | 				goto out; | ||||||
| 			} | 			} | ||||||
| 			assert((uintptr_t)cmp_buffer % SelectedDrive.SectorSize == 0); | 			assert((uintptr_t)cmp_buffer % SelectedDrive.SectorSize == 0); | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 		// Don't bother trying for something clever, using double buffering overlapped and whatnot:
 | 		// Don't bother trying for something clever, using double buffering overlapped and whatnot:
 | ||||||
| 		// With Windows' default optimizations, sync read + sync write for sequential operations
 | 		// With Windows' default optimizations, sync read + sync write for sequential operations
 | ||||||
|  | @ -1585,22 +1587,17 @@ static BOOL WriteDrive(HANDLE hPhysicalDrive, HANDLE hSourceImage) | ||||||
| 				// Read block and compare against the block that needs to be written
 | 				// Read block and compare against the block that needs to be written
 | ||||||
| 				s = ReadFile(hPhysicalDrive, cmp_buffer, rSize, &xSize, NULL); | 				s = ReadFile(hPhysicalDrive, cmp_buffer, rSize, &xSize, NULL); | ||||||
| 				if ((!s) || (xSize != rSize) ) { | 				if ((!s) || (xSize != rSize) ) { | ||||||
| 					uprintf("Read error: Could not read data for comparison - %s", WindowsErrorString()); | 					uprintf("Read error: Could not read data for fast zeroing comparison - %s", WindowsErrorString()); | ||||||
| 					goto out; | 					goto out; | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				// Check for an empty block
 | 				// Check for an empty block by comparing with the first element
 | ||||||
| 				ptr = (int*)(cmp_buffer); | 				zero_data = cmp_buffer[0]; | ||||||
| 				// Get first element
 |  | ||||||
| 				zero_data = ptr[0]; |  | ||||||
| 				// Check all bits are the same
 | 				// Check all bits are the same
 | ||||||
| 				if ((zero_data == 0) || (zero_data == -1)) { | 				if ((zero_data == 0) || (zero_data == 0xffffffff)) { | ||||||
| 					// Compare the rest of the block against the first element
 | 					// Compare the rest of the block against the first element
 | ||||||
| 					for (i = 1; i < (int)(rSize / sizeof(int)); i++) { | 					for (i = 1; (i < rSize / sizeof(uint32_t)) && (cmp_buffer[i] == zero_data); i++); | ||||||
| 						if (ptr[i] != zero_data) | 					if (i >= rSize / sizeof(uint32_t)) { | ||||||
| 							break; |  | ||||||
| 					} |  | ||||||
| 					if (i >= (int)(rSize / sizeof(int))) { |  | ||||||
| 						// Block is empty, skip write
 | 						// Block is empty, skip write
 | ||||||
| 						wSize = rSize; | 						wSize = rSize; | ||||||
| 						continue; | 						continue; | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								src/net.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/net.c
									
										
									
									
									
								
							|  | @ -985,13 +985,21 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) | ||||||
| 	close_fido_cookie_prompts = FALSE; | 	close_fido_cookie_prompts = FALSE; | ||||||
| 	if ((dwExitCode == 0) && PeekNamedPipe(hPipe, NULL, dwPipeSize, NULL, &dwAvail, NULL) && (dwAvail != 0)) { | 	if ((dwExitCode == 0) && PeekNamedPipe(hPipe, NULL, dwPipeSize, NULL, &dwAvail, NULL) && (dwAvail != 0)) { | ||||||
| 		url = malloc(dwAvail + 1); | 		url = malloc(dwAvail + 1); | ||||||
|  | 		dwSize = 0; | ||||||
| 		if ((url != NULL) && ReadFile(hPipe, url, dwAvail, &dwSize, NULL) && (dwSize > 4)) { | 		if ((url != NULL) && ReadFile(hPipe, url, dwAvail, &dwSize, NULL) && (dwSize > 4)) { | ||||||
| #else | #else | ||||||
| 	{	{	url = strdup(FORCE_URL); | 	{	{	url = strdup(FORCE_URL); | ||||||
| 			dwSize = (DWORD)strlen(FORCE_URL); | 			dwSize = (DWORD)strlen(FORCE_URL); | ||||||
| #endif | #endif | ||||||
| 			IMG_SAVE img_save = { 0 }; | 			IMG_SAVE img_save = { 0 }; | ||||||
| 			url[dwSize] = 0; | // WTF is wrong with Microsoft's static analyzer reporting a potential buffer overflow here?!?
 | ||||||
|  | #if defined(_MSC_VER) | ||||||
|  | #pragma warning(disable: 6386) | ||||||
|  | #endif | ||||||
|  | 			url[min(dwSize, dwAvail)] = 0; | ||||||
|  | #if defined(_MSC_VER) | ||||||
|  | #pragma warning(default: 6386) | ||||||
|  | #endif | ||||||
| 			EXT_DECL(img_ext, GetShortName(url), __VA_GROUP__("*.iso"), __VA_GROUP__(lmprintf(MSG_036))); | 			EXT_DECL(img_ext, GetShortName(url), __VA_GROUP__("*.iso"), __VA_GROUP__(lmprintf(MSG_036))); | ||||||
| 			img_save.Type = IMG_SAVE_TYPE_ISO; | 			img_save.Type = IMG_SAVE_TYPE_ISO; | ||||||
| 			img_save.ImagePath = FileDialog(TRUE, NULL, &img_ext, 0); | 			img_save.ImagePath = FileDialog(TRUE, NULL, &img_ext, 0); | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | ||||||
| IDD_DIALOG DIALOGEX 12, 12, 232, 326 | IDD_DIALOG DIALOGEX 12, 12, 232, 326 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| EXSTYLE WS_EX_ACCEPTFILES | EXSTYLE WS_EX_ACCEPTFILES | ||||||
| CAPTION "Rufus 3.13.1715" | CAPTION "Rufus 3.13.1716" | ||||||
| FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | ||||||
| BEGIN | BEGIN | ||||||
|     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP |     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP | ||||||
|  | @ -395,8 +395,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 3,13,1715,0 |  FILEVERSION 3,13,1716,0 | ||||||
|  PRODUCTVERSION 3,13,1715,0 |  PRODUCTVERSION 3,13,1716,0 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -414,13 +414,13 @@ BEGIN | ||||||
|             VALUE "Comments", "https://rufus.ie" |             VALUE "Comments", "https://rufus.ie" | ||||||
|             VALUE "CompanyName", "Akeo Consulting" |             VALUE "CompanyName", "Akeo Consulting" | ||||||
|             VALUE "FileDescription", "Rufus" |             VALUE "FileDescription", "Rufus" | ||||||
|             VALUE "FileVersion", "3.13.1715" |             VALUE "FileVersion", "3.13.1716" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)" | ||||||
|             VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" |             VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" | ||||||
|             VALUE "OriginalFilename", "rufus-3.13.exe" |             VALUE "OriginalFilename", "rufus-3.13.exe" | ||||||
|             VALUE "ProductName", "Rufus" |             VALUE "ProductName", "Rufus" | ||||||
|             VALUE "ProductVersion", "3.13.1715" |             VALUE "ProductVersion", "3.13.1716" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue