Let me start from scratch please.  I wasn't aware of this
bugreport/discussion, and I made a mistake by not filing
a proper unblock request when I uploaded the busybox
package with all the fixes.  So here are descriptions of
every change.

A sort of a fore-word first.  Busybox is kind of unusual package
in a way that it re-implements functionality of various existing
packages.  Base debian system uses other implementations of the
same functionality usually.  So from this PoV, any busybox bug
is not "that" important for a user's debian system, since a
typical user does not use any busybox applets at all.

Busybox _is_ used on almost every end-user system because it
provides the set of basic *nix utilities for initramfs, and
it is used in debian-installer.  But these are very restricted
environments with much better defined components and much less
chance to have a combination which triggers one or another bug.

So, any bug in busybox which does not affect basic initramfs or
d-i functionality directly can't be "important enough" for whole
debian system, so to say.

On the other hand, sometimes, since busybox is almost always
installed and available on any debian system, it gets used by
users in various much less restricted environments, which
leads to situations where the bugs are actually gets hit.
This is minority of users (again, so to say).

So this is about whenever we really care about this minority
or not, _plus_ about _possible_ issues in d-i or initramfs.

Another source of "unusuality" comes from the fact that busybox
implements a ton of _independent_ applets, so that a change in
one does not affect anything else (if we don't count changes in,
say, memory layout which triggers bugs elsewhere - this has already
happened at least once during wheezy development cycle, when we
discovered bug with unaligned memory access which was hidden
because the objects were actually aligned properly before we
changed something unrelated in memory).

So, back to the changes.

busybox (1:1.20.0-8) unstable; urgency=low

  * grep-fix-grep--Fw-not-respecting-the--w-option.patch - implement
    fgrep -w correctly (Closes: #695862)

As has been said before, this is a "feature fix".  It is not.
The problem initially has been raized in some other package
which had initramfs hook which didn't work.  I don't remember
which package it was, the context was that it tried to find
some CPU feature by grepping /proc/cpuinfo with -w flag to
grep, used to remove false positives, and it didn't work.
(/proc/cpuinfo is just an example, I don't really remember
what it was).  This is one of these bugs which makes other,
unrelated components fails in unexpected and difficult to
debug ways.

The fix is somewhat large, because it had to deal with logic
of operations in grep applet.  On the plus side, it comes
with additional testcases which checks for this issue, and
there are lots of other grep-related testcases already
present.  Unfortunatly busybox debian package still does
not run any testcases during build (this is on my TODO
list of first things to do for jessie), but having in mind
the situation (deep freeze) and importance of the applet
I ran provided and a few more testcases against the resulting
grep on x86, ppc and mips platforms (on debian porterboxes)
manually to ensure the fix does not break anything else and
actually fixes the bug.

If you ask me, this is about the same importance as #686502,
but it is less obvious.  This grep-w bug does not lead to
data loss directly, the problem is that we can't rely on
grep doing the right thing when we use it in a familiar,
natural way - like when we try to fix a false positive by
adding -w _somewhere else_ (in some other package that is),
and it stops working.

That's why it isn't a "feature fix", busybox claimed to
support grep-w but it does not work.

What we're fixing here mostly is about _further_ d-i or
initramfs changes (including possibility to have these
changes in wheezy too) which looks completely correct and
obvious but don't work in practice.  Plus some random rare
end-users usage of busybox grep, of these are exists.
What we risk here is almost nothing, at least according
to my tests on several platforms.


  * xz-support-concatenated-xz-streams.patch (Closes: #686502)

This is the "main" RC bug currently filed against busybox.
The rationale for it being RC is because it causes _silent_
data loss when decompressing certain kinds of XZ streams.

Again, the severuty can be argued for sure, due to whole
nature of busybox as a "second-kind sitizen" as mentioned
at the beginning of this mail.  First, not everyone is
using busybox unxz (which is used in busybox tar and other
archivers too), second, concatenaed xz streams aren't
frequent either (but this becomes more and more of a problem,
because such streams are produced by parallel xz, and this
already seen "in the wild" - in particular, recent kernel
sources on kernel.org are of this kind).

We're unlikely to met all the conditions for this bug in
d-i or initramfs during wheezy lifetime, -- _provided_
that some future _wheeze_ update will not contain such
concatenated xz streams produced by, say, an improved
version of dpkg (which utilizes multiple cores for
compression), -- but this is an unlikely situation.

What we _also_ fixing here is a possible silent data loss
for end-users who may use buzybox to uncompress their xz
files somewhere (note this may include rescue CDs based on
d-i too).

The fix is also somewhat large but it is stright-forward
and easy to read/understand.  I ran a few tests on it
too to ensure it works as expected, -- just a few, not
a feeding it a corpus of various test xz streams with
various corner cases, which I don't have.  But it appears
to work.

Again, if you ask me, I'd say it about of the same importance
as grep-w fix, but it is much more about end-user expirience
than about internal debian (initramfs and d-i).


  * lineedit-initialize-delptr.patch - fix segfault in line editing
    facility (Closes: #701959)

Purely end-user fix - for users who actually use busybox shell
for something, e.g. rescue CD.  I've hit it myself at least once
when evaluated shell vi line-editing mode.  A fun mode I'd say,
and it isn't an important fix really, but it is so stright-
forward and obvious and does not affect anything else...
So I thought I'd include it anyway, as it does no harm at all.


  * mdev-fix-mode-of-dir1-in-=dir1-dir2-file-rule.patch - make intermediate
    dirs in /dev to be of mode 0755 not 0777 (Closes: #701965)

This one got a CVE# assigned to it, but mdev applet is not used
in Debian at all, only if a user does that manually (ie, without
any debian-provided package).  FWIW, mdev is a trivial "replacement"
for udev.

It is one of "oh noes this has a CVE# assigned so let's fix it right away"
bugs as KiBi pointed out, exactly, but this is definitely not an RC bug,
and I never said it is one.  It is more about "since this is a very
specific applet which does not affect anything else and there may be
some (strange) users who are affected, let's just fix it so we wont
have these security tags anymore".  For one, it actually hits a few
of my systems, where I actually use mdev instead of udev, but I'm
not sure if there's anyone who also uses it like me ;)

At any rate, mdev is not included into d-i version of busybox (.udeb),
so this change does not affect d-i at all, and initramfs does not
use this applet.  So there's very low risk assotiated with this
change.


  * fix unaligned access macros (Closes: #701968)
    - fix-move_to_unaligned16.patch
    - xz-fix-put_unaligned_e32.patch

This one is a potential bug, I don't know how probably to hit it
in practice.  It may only happen on some platforms (where
unaligned access generates a trap) and only in some corner cases
(in xz case when we're at the end of a buffer which, in turn is
at the very end of our address space, -- so we access the next
byte right after our address space.  I can only guess that if we
_ever_ hit it, it'll be difficult to debug and even reproduce,
but it hopefully should be visible at least (not silent as in
#686502).

On the other hand we studied all users of the functions/macros
we're fixing (that's actually how the second bug was found),
and ensured the users behaves correctly.


Overall, the fixes are ordered the way how I think their importance
to be in wheezy is (yes with grep-w being more important than xz
truncation).  But as I said in the beginning, busybox isn't a
first-class sitizen and _all_ this can easily be just ignored
for wheezy, since all this may only impact very few users who
uses their systems in "non-standard" way, or has (low) potential
to break _further_ changes to other packages (tpu), again only
for wheezy.

I especially picked only really important and _safe_ changes
and carefully verified the result works in a sane way.


Now, we have several options to deal with the situation (in no
particular order):

 o accept whole thing to wheezy (this is what I was aiming for,
   but failed to write the above description properly in time).

 o ignore whole thing and keep current wheezy version 1.20.0-7
   in wheezy (and mark #695862 - xz truncation - as non-RC).
   This is the simplest solution.

 o make another upload with only some changes (from the whole
   list of 4).  If we do that, I propose to include at least
   grep-w and xz-truncation fixes.

If the question is only about d-i, all fixes appears to be at
least harmless for it, and at least grep-w is important.  But
this is IMHO, just like the rest of this email.


And finally, I understand that busybox is a "second-class"
package (as I already mentioned several times), and I didn't
expect it will cause so much time-consuming discussion, --
it should be quieter than most other packages.  Unfortunately
this is not the case, and I really hope to fix this somehow ;)

Thanks,

/mjt


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to