pci: refuse empty ROM files
A zero size ROM file is invalid and should produce a warning. Attempting to use a zero size file ends up hitting an assertion qemu_ram_set_idstr() because RAMBlocks with duplicate addresses are allocated - due to zero size the allocator doesn't increment the next available RAMBlock offset. Also convert __FUNCTION__ to __func__ while we're touching this code. There are no other __FUNCTION__ instances in pci.c anymore. Reported-by: Milos Ivanovic <milosivanovic@orcon.net.nz> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									ea7cfed68b
								
							
						
					
					
						commit
						8c7f3dd05e
					
				@ -1912,7 +1912,12 @@ static int pci_add_option_rom(PCIDevice *pdev, bool is_default_rom)
 | 
				
			|||||||
    size = get_image_size(path);
 | 
					    size = get_image_size(path);
 | 
				
			||||||
    if (size < 0) {
 | 
					    if (size < 0) {
 | 
				
			||||||
        error_report("%s: failed to find romfile \"%s\"",
 | 
					        error_report("%s: failed to find romfile \"%s\"",
 | 
				
			||||||
                     __FUNCTION__, pdev->romfile);
 | 
					                     __func__, pdev->romfile);
 | 
				
			||||||
 | 
					        g_free(path);
 | 
				
			||||||
 | 
					        return -1;
 | 
				
			||||||
 | 
					    } else if (size == 0) {
 | 
				
			||||||
 | 
					        error_report("%s: ignoring empty romfile \"%s\"",
 | 
				
			||||||
 | 
					                     __func__, pdev->romfile);
 | 
				
			||||||
        g_free(path);
 | 
					        g_free(path);
 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user