<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/deb/deblistparser.h, branch 1.1.2</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=1.1.2</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=1.1.2'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2015-10-23T16:06:23Z</updated>
<entry>
<title>deblistparser: Make PrioList const</title>
<updated>2015-10-23T16:06:23Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2015-10-23T16:02:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f77ea39c94988ab6adcb2d6bbf5466b0bc65953b'/>
<id>urn:sha1:f77ea39c94988ab6adcb2d6bbf5466b0bc65953b</id>
<content type='text'>
More safety, less writeable memory.
</content>
</entry>
<entry>
<title>Do not parse Status fields from remote sources</title>
<updated>2015-08-27T12:51:47Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2015-08-21T16:00:37Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=1c73b0fc41c23a08994ef1464c529e0aacff16de'/>
<id>urn:sha1:1c73b0fc41c23a08994ef1464c529e0aacff16de</id>
<content type='text'>
This could allow an attacker to mark a package as installed in a
remote package index, as long as the package was not listed in
the dpkg status file.

This way, an attacker could force the installation of a package
during a dist-upgrade, by providing two packages in an index,
an older marked as installed, and a newer - apt would "upgrade"
to the newer version.
</content>
</entry>
<entry>
<title>parse packages from all architectures into the cache</title>
<updated>2015-08-10T15:27:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-07-20T10:32:46Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7f8c0eed6983db7b8959f1498fc8bc80c98d719e'/>
<id>urn:sha1:7f8c0eed6983db7b8959f1498fc8bc80c98d719e</id>
<content type='text'>
Now that we can dynamically create dependencies and provides as needed
rather than requiring to know with which architectures we will deal
before running we can allow the listparser to parse all records rather
than skipping records of "unknown" architectures.

This can e.g. happen if a user has foreign architecture packages in his
status file without dpkg knowing about this architecture (or apt
configured in this way).

A sideeffect is that now arch:all packages are (correctly) recorded as
available from any Packages file, not just from the native one – which
has its downsides for the resolver as mixed-arch source packages can
appear in different architectures at different times, but that is the
problem of the resolver and dealing with it in the parser is at best a
hack (and also depends on a helpful repository).

Another sideeffect is that his allows :none packages to appear in
Packages files again as we don't do any kind of checks now, but given
that they aren't really supported (anymore) by anyone we can live with
that.
</content>
</entry>
<entry>
<title>elimate duplicated code in pkgIndexFile subclasses</title>
<updated>2015-08-10T15:27:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-07-20T08:17:29Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c9443c01208377f0cba9706412ea3a98ad97b56d'/>
<id>urn:sha1:c9443c01208377f0cba9706412ea3a98ad97b56d</id>
<content type='text'>
Trade deduplication of code for a bunch of new virtuals, so it is
actually visible how the different indexes behave cleaning up the
interface at large in the process.

Git-Dch: Ignore
</content>
</entry>
<entry>
<title>just-in-time creation for (implicit) Provides</title>
<updated>2015-08-10T15:27:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-07-16T17:41:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ecc138f858fab61e0b888d3d13854d1422c3432b'/>
<id>urn:sha1:ecc138f858fab61e0b888d3d13854d1422c3432b</id>
<content type='text'>
Expecting the worst is easy to code, but has its disadvantages e.g.
by creating package structures which otherwise would have never
existed. By creating the provides instead at the time a package
structure is added we are well prepared for the introduction of partial
architectures, massive amounts of M-A:foreign (and :allowed) and co as
far as provides are concerned at least. We have something relatively
similar for dependencies already.

Many tests are added for both M-A states and the code cleaned to
properly support implicit provides for foreign architectures and
architectures we 'just' happen to parse.

Git-Dch: Ignore
</content>
</entry>
<entry>
<title>remove the compatibility markers for 4.13 abi</title>
<updated>2015-08-10T15:27:58Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-07-15T11:21:21Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4dc77823d360158d6870a5710cc8c17064f1308f'/>
<id>urn:sha1:4dc77823d360158d6870a5710cc8c17064f1308f</id>
<content type='text'>
We aren't and we will not be really compatible again with the previous
stable abi, so lets drop these markers (which never made it into a
released version) for good as they have outlived their intend already.

Git-Dch: Ignore
</content>
</entry>
<entry>
<title>add c++11 override marker to overridden methods</title>
<updated>2015-08-10T15:27:17Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-07-08T22:35:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3b3028467ceccca0b73a8f53051c0fa4de313111'/>
<id>urn:sha1:3b3028467ceccca0b73a8f53051c0fa4de313111</id>
<content type='text'>
C++11 adds the 'override' specifier to mark that a method is overriding
a base class method and error out if not. We hide it in the APT_OVERRIDE
macro to ensure that we keep compiling in pre-c++11 standards.

Reported-By: clang-modernize -add-override -override-macros
Git-Dch: Ignore
</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>store Release files data in the Cache</title>
<updated>2015-06-12T14:33:37Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-06-12T00:08:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b07aeb1a6e24825e534167a737043441e871de9f'/>
<id>urn:sha1:b07aeb1a6e24825e534167a737043441e871de9f</id>
<content type='text'>
We used to read the Release file for each Packages file and store the
data in the PackageFile struct even through potentially many Packages
(and Translation-*) files could use the same data. The point of the
exercise isn't the duplicated data through. Having the Release files as
first-class citizens in the Cache allows us to properly track their
state as well as allows us to use the information also for files which
aren't in the cache, but where we know to which Release file they
belong (Sources are an example for this).

This modifies the pkgCache structs, especially the PackagesFile struct
which depending on how libapt users access the data in these structs can
mean huge breakage or no visible change. As a single data point:
aptitude seems to be fine with this. Even if there is breakage it is
trivial to fix in a backportable way while avoiding breakage for
everyone would be a huge pain for us.

Note that not all PackageFile structs have a corresponding ReleaseFile.
In particular the dpkg/status file as well as *.deb files have not. As
these have only a Archive property need, the Component property takes
over this duty and the ReleaseFile remains zero. This is also the reason
why it isn't needed nor particularily recommended to change from
PackagesFile to ReleaseFile blindly. Sticking with the earlier is
usually the better option.
</content>
</entry>
<entry>
<title>mark internal interfaces as hidden</title>
<updated>2014-11-08T13:28:28Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2014-11-06T11:41:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=dce45dbe97531de6806707445da97d3f22285db8'/>
<id>urn:sha1:dce45dbe97531de6806707445da97d3f22285db8</id>
<content type='text'>
We have a bunch of classes which are of no use for the outside world,
but were still exported and so needed to preserve ABI/API. Marking them
as hidden to not export them any longer is a big API break in theory,
but in practice nobody is using them – as if they would its a bug.
</content>
</entry>
</feed>
