mirror of
				https://git.proxmox.com/git/qemu
				synced 2025-10-27 10:00:53 +00:00 
			
		
		
		
	optionrom: fix bugs in signrom.sh
signrom.sh has multiple bugs: - the last byte is considered when calculating the existing checksum, but not when computing the correction - apprently the 'expr' expression overflows and produces incorrect results with larger roms - if the checksum happened to be zero, we calculated the correction byte to be 256 Instead of rewriting this in half a line of python, this patch fixes the bugs. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
		
							parent
							
								
									e71e00ed25
								
							
						
					
					
						commit
						33bbd1de5e
					
				| @ -31,14 +31,13 @@ x=`dd if="$1" bs=1 count=1 skip=2 2>/dev/null | od -t u1 -A n` | |||||||
| size=$(( $x * 512 - 1 )) | size=$(( $x * 512 - 1 )) | ||||||
| 
 | 
 | ||||||
| # now get the checksum | # now get the checksum | ||||||
| nums=`od -A n -t u1 -v "$1"` | nums=`od -A n -t u1 -v -N $size "$1"` | ||||||
| for i in ${nums}; do | for i in ${nums}; do | ||||||
|     # add each byte's value to sum |     # add each byte's value to sum | ||||||
|     sum=`expr $sum + $i` |     sum=`expr \( $sum + $i \) % 256` | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| sum=$(( $sum % 256 )) | sum=$(( (256 - $sum) % 256 )) | ||||||
| sum=$(( 256 - $sum )) |  | ||||||
| sum_octal=$( printf "%o" $sum ) | sum_octal=$( printf "%o" $sum ) | ||||||
| 
 | 
 | ||||||
| # and write the output file | # and write the output file | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Avi Kivity
						Avi Kivity