<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/contrib/hashes.h, branch 1.4_beta2</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=1.4_beta2</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=1.4_beta2'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2016-09-01T14:13:14Z</updated>
<entry>
<title>try not to call memcpy with length 0 in hash calculations</title>
<updated>2016-09-01T14:13:14Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-08-31T08:11:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=644478e8db56f305601c3628a74e53de048b28c8'/>
<id>urn:sha1:644478e8db56f305601c3628a74e53de048b28c8</id>
<content type='text'>
memcpy is marked as nonnull for its input, but ignores the input anyhow
if the declared length is zero. Our SHA2 implementations do this as
well, it was "just" MD5 and SHA1 missing, so we add the length check
here as well as along the callstack as it is really pointless to do all
these method calls for "nothing".

Reported-By: gcc -fsanitize=undefined
</content>
</entry>
<entry>
<title>doc: VerifyFile checks all hashes instead of best only</title>
<updated>2015-11-29T00:08:37Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-11-28T16:11:23Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=875a9e54ba956dace823866bca7935f6ab8e8d06'/>
<id>urn:sha1:875a9e54ba956dace823866bca7935f6ab8e8d06</id>
<content type='text'>
The implementation changed in
495b7a615a2d8f485beadf88c6ed298f5bbe50c2

Git-Dch: Ignore
Reported-By: Julian Andres Klode &lt;jak@debian.org&gt;
</content>
</entry>
<entry>
<title>add messages to our deprecation warnings in libapt</title>
<updated>2015-11-27T14:40:47Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-11-27T14:40:47Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5dd00edbcf702cac1ea22392796c65881a8ef6f9'/>
<id>urn:sha1:5dd00edbcf702cac1ea22392796c65881a8ef6f9</id>
<content type='text'>
Git-Dch: Ignore
</content>
</entry>
<entry>
<title>Consider md5sum no longer a usable hash</title>
<updated>2015-09-01T09:29:49Z</updated>
<author>
<name>Michael Vogt</name>
<email>mvo@ubuntu.com</email>
</author>
<published>2015-09-01T09:13:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=55ae7a516126f9f064d8353bf962256b7307590a'/>
<id>urn:sha1:55ae7a516126f9f064d8353bf962256b7307590a</id>
<content type='text'>
The md5sum hash is broken since some time and we should no longer
consider it a usable hash. Also update the tests to reflect this.
</content>
</entry>
<entry>
<title>make all d-pointer * const pointers</title>
<updated>2015-08-10T15:25:25Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-06-17T07:29:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6c55f07a5fa3612a5d59c61a17da5fe640eadc8b'/>
<id>urn:sha1:6c55f07a5fa3612a5d59c61a17da5fe640eadc8b</id>
<content type='text'>
Doing this disables the implicit copy assignment operator (among others)
which would cause hovac if used on the classes as it would just copy the
pointer, not the data the d-pointer points to. For most of the classes
we don't need a copy assignment operator anyway and in many classes it
was broken before as many contain a pointer of some sort.

Only for our Cacheset Container interfaces we define an explicit copy
assignment operator which could later be implemented to copy the data
from one d-pointer to the other if we need it.

Git-Dch: Ignore
</content>
</entry>
<entry>
<title>support hashes for compressed pdiff files</title>
<updated>2015-06-09T10:57:36Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-06-07T22:06:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4f51fd8636592a96aecf17c8bf4cfdb3ea2207cc'/>
<id>urn:sha1:4f51fd8636592a96aecf17c8bf4cfdb3ea2207cc</id>
<content type='text'>
At the moment we only have hashes for the uncompressed pdiff files, but
via the new '$HASH-Download' field in the .diff/Index hashes can be
provided for the .gz compressed pdiff file, which apt will pick up now
and use to verify the download. Now, we "just" need a buy in from the
creators of repositories…
</content>
</entry>
<entry>
<title>rework hashsum verification in the acquire system</title>
<updated>2015-06-09T10:57:35Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-06-06T10:28:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=448c38bdcd72b52f11ec5f326f822cf57653f81c'/>
<id>urn:sha1:448c38bdcd72b52f11ec5f326f822cf57653f81c</id>
<content type='text'>
Having every item having its own code to verify the file(s) it handles
is an errorprune process and easy to break, especially if items move
through various stages (download, uncompress, patching, …). With a giant
rework we centralize (most of) the verification to have a better
enforcement rate and (hopefully) less chance for bugs, but it breaks the
ABI bigtime in exchange – and as we break it anyway, it is broken even
harder.

It shouldn't effect most frontends as they don't deal with the acquire
system at all or implement their own items, but some do and will need to
be patched (might be an opportunity to use apt on-board material).

The theory is simple: Items implement methods to decide if hashes need to
be checked (in this stage) and to return the expected hashes for this
item (in this stage). The verification itself is done in worker message
passing which has the benefit that a hashsum error is now a proper error
for the acquire system rather than a Done() which is later revised to a
Failed().
</content>
</entry>
<entry>
<title>calculate only expected hashes in methods</title>
<updated>2015-04-18T23:13:09Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-03-30T18:47:13Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9224ce3d4d1ea0428a70e75134998e08aa45b1e6'/>
<id>urn:sha1:9224ce3d4d1ea0428a70e75134998e08aa45b1e6</id>
<content type='text'>
Methods get told which hashes are expected by the acquire system, which
means we can use this list to restrict what we calculate in the methods
as any extra we are calculating is wasted effort as we can't compare it
with anything anyway.

Adding support for a new hash algorithm is therefore 'free' now and if a
algorithm is no longer provided in a repository for a file, we
automatically stop calculating it.

In practice this results in a speed-up in Debian as we don't have SHA512
here (so far), so we practically stop calculating it.
</content>
</entry>
<entry>
<title>guard const-ification API changes</title>
<updated>2014-11-08T13:29:25Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2014-11-07T16:49:36Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=02e20767719873fa8f1919bd0e7a75f63e00c484'/>
<id>urn:sha1:02e20767719873fa8f1919bd0e7a75f63e00c484</id>
<content type='text'>
Git-Dch: Ignore
</content>
</entry>
<entry>
<title>replace ignore-deprecated #pragma dance with _Pragma</title>
<updated>2014-11-08T13:26:00Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2014-10-26T22:17:03Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=586d8704716a10e0f8b9c400cab500f5353eebe6'/>
<id>urn:sha1:586d8704716a10e0f8b9c400cab500f5353eebe6</id>
<content type='text'>
For compatibility we use/provide and fill quiet some deprecated methods
and fields, which subsequently earns us a warning for using them. These
warnings therefore have to be disabled for these codeparts and that is
what this change does now in a slightly more elegant way.

Git-Dch: Ignore
</content>
</entry>
</feed>
