[devel] [PATCH for apt 26/38] Fix warning about truncation of value of pkgCache::Header::HeaderSz
Dmitry V. Levin
ldv на altlinux.org
Чт Дек 12 02:41:05 MSK 2019
On Wed, Dec 11, 2019 at 10:51:28AM +0300, Aleksei Nikiforov wrote:
> 11.12.2019 1:58, Dmitry V. Levin пишет:
> > On Tue, Dec 10, 2019 at 06:23:31PM +0300, Aleksei Nikiforov wrote:
> >> Update types of other variables as well.
> >
> > What's the rationale for changing types of *all* these fields,
> > and for choosing architecture-dependent "unsigned long"
> > as the new type instead of "unsigned short"?
>
> Value of HeaderSz is truncated. IIRC, assigned value was around 270k.
> Types of other variables were changed for uniformity and possible
> mitigation of same overflow issues in future, but may be reverted for
> now. Since type wasn't architecture-independent, similar
> architecture-dependent type of bigger size was used. All of this may be
> changed as needed, with only exception of keeping size of HeaderSz
> increased.
How many objects containing struct pkgCache::Header are created?
If there are just a few of them, then we don't have to worry about
the memory footprint and can make them all unsigned long (== size_t)
as you did in your patch.
> >> apt/apt-pkg/pkgcache.h | 14 +++++++-------
> >> 1 file changed, 7 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/apt/apt-pkg/pkgcache.h b/apt/apt-pkg/pkgcache.h
> >> index 05a63bc..6b44522 100644
> >> --- a/apt/apt-pkg/pkgcache.h
> >> +++ b/apt/apt-pkg/pkgcache.h
> >> @@ -175,13 +175,13 @@ struct pkgCache::Header
> >> unsigned long OptionsHash;
> >>
> >> // Size of structure values
> >> - unsigned short HeaderSz;
> >> - unsigned short PackageSz;
> >> - unsigned short PackageFileSz;
> >> - unsigned short VersionSz;
> >> - unsigned short DependencySz;
> >> - unsigned short ProvidesSz;
> >> - unsigned short VerFileSz;
> >> + unsigned long HeaderSz;
> >> + unsigned long PackageSz;
> >> + unsigned long PackageFileSz;
> >> + unsigned long VersionSz;
> >> + unsigned long DependencySz;
> >> + unsigned long ProvidesSz;
> >> + unsigned long VerFileSz;
> >>
> >> // Structure counts
> >> unsigned long PackageCount;
--
ldv
Подробная информация о списке рассылки Devel