<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/methods, branch 1.3_pre3</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=1.3_pre3</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=1.3_pre3'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2016-07-30T08:14:47Z</updated>
<entry>
<title>prevent C++ locale number formatting in text APIs (try 2)</title>
<updated>2016-07-30T08:14:47Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-30T07:57:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7303e11ff28f920a6277c159aa46f80c007350bb'/>
<id>urn:sha1:7303e11ff28f920a6277c159aa46f80c007350bb</id>
<content type='text'>
Followup of b58e2c7c56b1416a343e81f9f80cb1f02c128e25.
Still a regression of sorts of 8b79c94af7f7cf2e5e5342294bc6e5a908cacabf.

Closes: 832044
</content>
</entry>
<entry>
<title>rred: truncate result file before writing to it</title>
<updated>2016-07-27T13:52:22Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-27T13:52:22Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=0e071dfe205ad21d8b929b4bb8164b008dc7c474'/>
<id>urn:sha1:0e071dfe205ad21d8b929b4bb8164b008dc7c474</id>
<content type='text'>
If another file in the transaction fails and hence dooms the transaction
we can end in a situation in which a -patched file (= rred writes the
result of the patching to it) remains in the partial/ directory.

The next apt call will perform the rred patching again and write its
result again to the -patched file, but instead of starting with an empty
file as intended it will override the content previously in the file
which has the same result if the new content happens to be longer than
the old content, but if it isn't parts of the old content remain in the
file which will pass verification as the new content written to it
matches the hashes and if the entire transaction passes the file will be
moved the lists/ directory where it might or might not trigger errors
depending on if the old content which remained forms a valid file
together with the new content.

This has no real security implications as no untrusted data is involved:
The old content consists of a base file which passed verification and a
bunch of patches which all passed multiple verifications as well, so the
old content isn't controllable by an attacker and the new one isn't
either (as the new content alone passes verification). So the best an
attacker can do is letting the user run into the same issue as in the
report.

Closes: #831762
</content>
</entry>
<entry>
<title>http: skip requesting if pipeline is full</title>
<updated>2016-07-27T11:25:18Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-27T11:25:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=353b7bab08704cd2f7e2b6951c9dcd7cf3023e3a'/>
<id>urn:sha1:353b7bab08704cd2f7e2b6951c9dcd7cf3023e3a</id>
<content type='text'>
The rewrite in 742f67eaede80d2f9b3631d8697ebd63b8f95427 is based on the
assumption that the pipeline will always be at least one item short each
time it is called, but the logs in #832113 suggest that this isn't
always the case. I fail to see how at the moment, but the old
implementation had this behavior, so restoring it can't really hurt, can
it?
</content>
</entry>
<entry>
<title>use proper warning for automatic pipeline disable</title>
<updated>2016-07-27T07:23:18Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-27T06:08:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b9c20219dc17db1d29eaf297263a4b008bd1b90b'/>
<id>urn:sha1:b9c20219dc17db1d29eaf297263a4b008bd1b90b</id>
<content type='text'>
Also fixes message itself to mention the correct option name as noticed
in #832113.
</content>
</entry>
<entry>
<title>verify hash of input file in rred</title>
<updated>2016-07-25T22:01:50Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-25T22:01:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6e71ec6fcdcaa926c98fa58cd4af38e42556df15'/>
<id>urn:sha1:6e71ec6fcdcaa926c98fa58cd4af38e42556df15</id>
<content type='text'>
We read the entire input file we want to patch anyhow, so we can also
calculate the hash for that file and compare it with what he had
expected it to be.

Note that this isn't really a security improvement as a) the file we
patch is trusted &amp; b) if the input is incorrect, the result will hardly be
matching, so this is just for failing slightly earlier with a more
relevant error message (althrough, in terms of rred its ignored and
complete download attempt instead).
</content>
</entry>
<entry>
<title>keep trying with next if connection to a SRV host failed</title>
<updated>2016-07-06T13:53:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-06T12:49:39Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3af3ac2f5ec007badeded46a94be2bd06b9917a2'/>
<id>urn:sha1:3af3ac2f5ec007badeded46a94be2bd06b9917a2</id>
<content type='text'>
Instead of only trying the first host we get via SRV, we try them all as
we are supposed to and if that isn't working we try to connect to the
host itself as if we hadn't seen any SRV records. This was already the
intend of the old code, but it failed to hide earlier problems for the
next call, which would unconditionally fail then resulting in an all
around failure to connect. With proper stacking we can also keep the
error messages of each call around (and in the order tried) so if the
entire connection fails we can report all the things we have tried while
we discard the entire stack if something works out in the end.
</content>
</entry>
<entry>
<title>report all instead of first error up the acquire chain</title>
<updated>2016-07-06T13:53:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-06T13:10:52Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b50dfa6b2dd2d459e0c2746ac9367982b96ffac0'/>
<id>urn:sha1:b50dfa6b2dd2d459e0c2746ac9367982b96ffac0</id>
<content type='text'>
If we don't give a specific error to report up it is likely that all
error currently in the error stack are equally important, so reporting
just one could turn out to be confusing e.g. if name resolution failed
in a SRV record list.
</content>
</entry>
<entry>
<title>don't change owner/perms/times through file:// symlinks</title>
<updated>2016-07-06T00:25:51Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-05T18:04:27Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3465138575e1fd0d5892d9b6be1ae232eb873460'/>
<id>urn:sha1:3465138575e1fd0d5892d9b6be1ae232eb873460</id>
<content type='text'>
If we have files in partial/ from a previous invocation or similar such
those could be symlinks created by file:// sources. The code is
expecting only real files through and happily changes owner,
modification times and permission on the file the symlink points to
which tend to be files we have no business in touching in this way.
Permissions of symlinks shouldn't be changed, changing owner is usually
pointless to, but just to be sure we pick the easy way out and use
lchown, check for symlinks before chmod/utimes.

Reported-By: Mattia Rizzolo on IRC
</content>
</entry>
<entry>
<title>avoid 416 response teardown binding to null pointer</title>
<updated>2016-07-05T18:44:45Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-05T11:07:29Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4460551841d909d3ee9c1de00156ed3cdf8b1665'/>
<id>urn:sha1:4460551841d909d3ee9c1de00156ed3cdf8b1665</id>
<content type='text'>
methods/http.cc:640:13: runtime error: reference binding to null pointer
of type 'struct FileFd'

This reference is never used in the cases it has a nullptr, so the
practical difference is non-existent, but its a bug still.

Reported-By: gcc -fsanitize=undefined
</content>
</entry>
<entry>
<title>use +0000 instead of UTC by default as timezone in output</title>
<updated>2016-07-02T10:01:17Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2016-07-02T09:28:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=0b45b6e5de1ba4224ced67a9952e009d0f4139a0'/>
<id>urn:sha1:0b45b6e5de1ba4224ced67a9952e009d0f4139a0</id>
<content type='text'>
All apt versions support numeric as well as 3-character timezones just
fine and its actually hard to write code which doesn't "accidently"
accepts it. So why change? Documenting the Date/Valid-Until fields in
the Release file is easy to do in terms of referencing the
datetime format used e.g. in the Debian changelogs (policy §4.4). This
format specifies only the numeric timezones through, not the nowadays
obsolete 3-character ones, so in the interest of least surprise we should
use the same format even through it carries a small risk of regression
in other clients (which encounter repositories created with
apt-ftparchive).

In case it is really regressing in practice, the hidden option
  -o APT::FTPArchive::Release::NumericTimezone=0
can be used to go back to good old UTC as timezone.

The EDSP and EIPP protocols use this 'new' format, the text interface
used to communicate with the acquire methods does not for compatibility
reasons even if none of our methods would be effected and I doubt any
other would (in these instances the timezone is 'GMT' as that is what
HTTP/1.1 requires). Note that this is only true for apt talking to
methods, (libapt-based) methods talking to apt will respond with the
'new' format.  It is therefore strongly adviced to support both also in
method input.
</content>
</entry>
</feed>
