<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/indexrecords.cc, branch 2.3.0</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.3.0</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.3.0'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2015-08-10T15:25:26Z</updated>
<entry>
<title>merge indexRecords into metaIndex</title>
<updated>2015-08-10T15:25:26Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-06-23T13:16:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5ad0096a4e19e191b59634e8a8817995ec4045ad'/>
<id>urn:sha1:5ad0096a4e19e191b59634e8a8817995ec4045ad</id>
<content type='text'>
indexRecords was used to parse the Release file – mostly the hashes –
while metaIndex deals with downloading the Release file, storing all
indexes coming from this release and … parsing the Release file, but
this time mostly for the other fields.

That wasn't a problem in metaIndex as this was done in the type specific
subclass, but indexRecords while allowing to override the parsing method
did expect by default a specific format.

APT isn't really supporting different types at the moment, but this is
a violation of the abstraction we have everywhere else and, which is the
actual reason for this merge: Options e.g. coming from the sources.list
come to metaIndex naturally, which needs to wrap them up and bring them
into indexRecords, so the acquire system is told about it as they don't
get to see the metaIndex, but they don't really belong in indexRecords
as this is just for storing data loaded from the Release file… the
result is a complete mess.

I am not saying it is a lot prettier after the merge, but at least
adding new options is now slightly easier and there is just one place
responsible for parsing the Release file. That can't hurt.
</content>
</entry>
<entry>
<title>fix memory leaks reported by -fsanitize</title>
<updated>2015-08-10T15:25:25Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-06-18T15:33:15Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3d8232bf97ce11818fb07813a71136484ea1a44a'/>
<id>urn:sha1:3d8232bf97ce11818fb07813a71136484ea1a44a</id>
<content type='text'>
Various small leaks here and there. Nothing particularily big, but still
good to fix. Found by the sanitizers while running our testcases.

Reported-By: gcc -fsanitize
Git-Dch: Ignore
</content>
</entry>
<entry>
<title>apply various style suggestions by cppcheck</title>
<updated>2015-08-10T15:24:01Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-06-16T22:14:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=e8afd16892e87a6e2f17c1019ee455f5583387c2'/>
<id>urn:sha1:e8afd16892e87a6e2f17c1019ee455f5583387c2</id>
<content type='text'>
Some of them modify the ABI, but given that we prepare a big one
already, these few hardly count for much.

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>treat older Release files than we already have as an IMSHit</title>
<updated>2015-05-18T20:15:06Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-05-18T20:15:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6bf93605fdb8e858d3f0a79a124c1d39f760094d'/>
<id>urn:sha1:6bf93605fdb8e858d3f0a79a124c1d39f760094d</id>
<content type='text'>
Valid-Until protects us from long-living downgrade attacks, but not all
repositories have it and an attacker could still use older but still
valid files to downgrade us. While this makes it sounds like a security
improvement now, its a bit theoretical at best as an attacker with
capabilities to pull this off could just as well always keep us days
(but in the valid period) behind and always knows which state we have,
as we tell him with the If-Modified-Since header. This is also why this
is 'silently' ignored and treated as an IMSHit rather than screamed at
the user as this can at best be an annoyance for attackers.

An error here would 'regularily' be encountered by users by out-of-sync
mirrors serving a single run (e.g. load balancer) or in two consecutive
runs on the other hand, so it would just help teaching people ignore it.

That said, most of the code churn is caused by enforcing this additional
requirement. Crisscross from InRelease to Release.gpg is e.g. very
unlikely in practice, but if we would ignore it an attacker could
sidestep it this way.
</content>
</entry>
<entry>
<title>explicit overload methods instead of adding parameters</title>
<updated>2014-11-08T13:29:25Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2014-11-07T17:18:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=fa5404ab01bdf06eaf147d9f133139e6c89b906a'/>
<id>urn:sha1:fa5404ab01bdf06eaf147d9f133139e6c89b906a</id>
<content type='text'>
Adding a new parameter (with a default) is an ABI break, but you can
overload a method, which is "just" an API break for everyone doing
references to this method (aka: nobody).

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>
<entry>
<title>promote filesize to a hashstring</title>
<updated>2014-10-24T21:54:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2014-10-23T14:54:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=23397c9d7d4d455461176600bb45c81185493504'/>
<id>urn:sha1:23397c9d7d4d455461176600bb45c81185493504</id>
<content type='text'>
It is a very simple hashstring, which is why it isn't contributing to
the usability of a list of them, but it is also trivial to check and
calculate, so it doesn't hurt checking it either as it can combined even
with the simplest other hashes greatly complicate attacks on them as you
suddenly need a same-size hash collision, which is usually a lot harder
to achieve.
</content>
</entry>
<entry>
<title>trusted=yes sources are secure, we just don't know why</title>
<updated>2014-10-13T09:29:46Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2014-10-13T06:12:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=07cb47e71f4de7e3c57f9dcfbfb82e4e5566aed6'/>
<id>urn:sha1:07cb47e71f4de7e3c57f9dcfbfb82e4e5566aed6</id>
<content type='text'>
Do not require a special flag to be present to update trusted=yes
sources as this flag in the sources.list is obviously special enough.

Note that this is just disabling the error message, the user will still
be warned about all the (possible) failures the repository generated, it
is just triggering the acceptance of the warnings on a source-by-source
level.

Similarily, the trusted=no flag doesn't require the user to pass
additional flags to update, if the repository looks fine in the view of
apt it will update just fine. The unauthenticated warnings will "just" be
presented then the data is used.

In case you wonder: Both was the behavior in previous versions, too.
</content>
</entry>
</feed>
