On Sun, Sep 29, 2019 at 6:38 AM Ken CJ Chou <[email protected]> wrote: > > > Hello, > > I'm using the latest version of busybox (1.31.0). > I found an issue when using "dpkg" and "dpkg-deb" in busybox. > When I performed some task to get the control info of a ".deb" file. > The output showed a "dpkg-deb: corrupted data" message. > > e.g. > ``` > # dpkg-deb -f <some_deb_file> > Package: <some_package> > ... > dpkg-deb: corrupted data > ``` > > I looked into the source code. > In file "archival/libarchive/decompress_unxz.c" line 97, here busybox tried > to decompress another xz stream when it found that the input stream isn't > ended. > > So the issue happens on newer Debian package files. > Newer Debian package files format is an "ar" archive of 3 files including > "debian-binary", "control.tar.xz", "data.tar.xz" in orders. > When performing tasks on the Debian package file, the archive handler open > the ".deb" file as the input stream. > When busybox complete reading the section of "control.tar.xz", it > automatically tried to decompress another xz stream because there is still > the section of "data.tar.xz" in the input stream. > In this situation, busybox will read the label of "ar" archive for > "data.tar.xz" section. Then it fails at checking xz's header magic. And > finally a "corrupted data" error message is printed.
Good analysis. I added a work-around, please try current git. _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
