[Rpm-maint] [PATCH] Fix type mismatch calculating new line program offset in debugedit.c.

Panu Matilainen pmatilai at redhat.com
Thu Feb 1 11:11:47 UTC 2018


On 01/22/2018 05:55 PM, Mark Wielaard wrote:
> edit_dwarf2 calculates the (new) offset in the line program by
> taking the difference between the old and new idx, which are of type
> size_t (unsigned), plus the size_diff of the header given as ssize_t
> (signed), and adding that to the current r_offset, which is an Elf64_Addr
> (unsigned). On 64bit architectures, where the size of Elf64_Addr and
> ssize_t are the same this isn't a problem. But on 32bit architectures,
> where the size of ssize_t is smaller than Elf64_Addr the smaller signed
> result gets promoted to an unsigned long first causing issues if the
> size_diff was negative.
> 
> This would have been caught by gcc -Wsign-conversion
> 
> warning: conversion to ‘long unsigned int’ from ‘ssize_t’ {aka ‘long int’}
> may change the sign of the result
> 
> But enabling this by default gives a lot of false positives.
> 
> Found and fixed by Richard Biener <rguenther at suse.de>.

Applied, thanks!

	- Panu -


More information about the Rpm-maint mailing list