Package: libparse-debian-packages-perl Version: 0.03-1 Severity: grave Tags: upstream Justification: causes non-serious data loss
Using libparse-debain-packages-perl, the following problem arises when parsing stanzas with more than 1 multiline entry: If a multiline entry is found, all lines of this entry are added to the result map under the key "body". If a different multiline entry is processed later on, all multiline entries are added to the same map entry "body", effectively mixing up content from different multiline fields. To demonstrate this, i used the attached source "test_packages.pl", together with the file unzipped file "Packages" from ftp://ftp.tugraz.at/mirror/debian/dists/sid/main /binary-amd64/Packages.gz. The relevant part of the Packages file looks like this: Package: browser-plugin-vlc Source: npapi-vlc Version: 2.0.0-2 Installed-Size: 201 Maintainer: Debian Multimedia Maintainers <pkg-multimedia- maintain...@lists.alioth.debian.org> Architecture: amd64 Replaces: mozilla-plugin-vlc (<< 2.0.0) Depends: vlc, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.3.4), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.9.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.24.0), libice6 (>= 1:1.0.0), libpango1.0-0 (>= 1.14.0), libsm6, libstdc++6 (>= 4.1.1), libvlc5 (>= 1.1.0), libx11-6 Breaks: mozilla-plugin-vlc (<< 2.0.0) Description: multimedia plugin for web browsers based on VLC Homepage: http://www.videolan.org/vlc/ Description-md5: 1dfbd075b62a574a99794b2eb520c80e Npp-Applications: 92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a, ec8030f7-c20a-464f-9b0e-13a3a9e97384 Npp-Description: play video and audio in Firefox using the VLC Multimedia Player Npp-File: libvlcplugin.so Npp-Mimetype: application/mpeg4-iod, application/mpeg4-muxcodetable, application/ogg, application/x-google-vlc-plugin, application/x-mplayer2, application/x-ogg, application/x-vlc-plugin, audio/3gpp, audio/3gpp2, audio/mpeg, audio/mpeg4, audio/wav, audio/x-mpeg, audio/x-wav, video/3gpp, video/3gpp2, video/mpeg, video/mpeg-system, video/mpeg4, video/quicktime, video/x-mpeg, video/x-mpeg-system, video/x-ms-asf, video/x-ms-asf-plugin, video/x-ms-wmv, video/x-msvideo Npp-Name: VLC Multimedia Plugin Tag: uitoolkit::gtk Section: video Priority: optional Filename: pool/main/n/npapi-vlc/browser-plugin-vlc_2.0.0-2_amd64.deb Size: 51758 MD5sum: 1714be2acb3cd2d7c1a53f5d86704c34 SHA1: aa57cb8dbb6d7291862968bf27e94ad8652f1fa2 SHA256: 1ca5784dedc8735f652bc47d50afc4b19d7577fd68b321cf063244bb408f8209 The output using libparse-debian-packages-perl yields the following output: --- Architecture: amd64 Breaks: mozilla-plugin-vlc (<< 2.0.0) Depends: 'vlc, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.3.4), libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.9.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.24.0), libice6 (>= 1:1.0.0), libpango1.0-0 (>= 1.14.0), libsm6, libstdc++6 (>= 4.1.1), libvlc5 (>= 1.1.0), libx11-6' Description: multimedia plugin for web browsers based on VLC Description-md5: 1dfbd075b62a574a99794b2eb520c80e Filename: pool/main/n/npapi-vlc/browser-plugin-vlc_2.0.0-2_amd64.deb Homepage: http://www.videolan.org/vlc/ Installed-Size: 201 MD5sum: 1714be2acb3cd2d7c1a53f5d86704c34 Maintainer: 'Debian Multimedia Maintainers <pkg-multimedia- maintain...@lists.alioth.debian.org>' Npp-Applications: '92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a,' Npp-Description: play video and audio in Firefox using the VLC Multimedia Player Npp-File: libvlcplugin.so Npp-Mimetype: 'application/mpeg4-iod,' Npp-Name: VLC Multimedia Plugin Package: browser-plugin-vlc Priority: optional Replaces: mozilla-plugin-vlc (<< 2.0.0) SHA1: aa57cb8dbb6d7291862968bf27e94ad8652f1fa2 SHA256: 1ca5784dedc8735f652bc47d50afc4b19d7577fd68b321cf063244bb408f8209 Section: video Size: 51758 Source: npapi-vlc Tag: uitoolkit::gtk Version: 2.0.0-2 body: |2 ec8030f7-c20a-464f-9b0e-13a3a9e97384 application/mpeg4-muxcodetable, application/ogg, application/x-google-vlc-plugin, application/x-mplayer2, application/x-ogg, application/x-vlc-plugin, audio/3gpp, audio/3gpp2, audio/mpeg, audio/mpeg4, audio/wav, audio/x-mpeg, audio/x-wav, video/3gpp, video/3gpp2, video/mpeg, video/mpeg-system, video/mpeg4, video/quicktime, video/x-mpeg, video/x-mpeg-system, video/x-ms-asf, video/x-ms-asf-plugin, video/x-ms-wmv, video/x-msvideo On can easily see, that the line ec8030f7-c20a-464f-9b0e-13a3a9e97384 from the Npp-Applications: entry gets added to the body: entry, which now holds all extra lines from the Npp-Applications: and Npp-Mimetype: entries. Also the entries for Npp-Applications: and Npp-Mimetype: now contain only one line, which is not the original content.This is cleary a bug, as it is now impossible to reconstruct the original content. -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-2-amd64 (SMP w/8 CPU cores) Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/dash Versions of packages libparse-debian-packages-perl depends on: ii libyaml-perl 0.81-1 ii perl 5.14.2-13 libparse-debian-packages-perl recommends no packages. libparse-debian-packages-perl suggests no packages. -- debconf-show failed
#!/usr/bin/perl use YAML; use Parse::Debian::Packages; my $fh= IO::File->new("Packages"); my $parser = Parse::Debian::Packages->new( $fh ); while (my %package = $parser->next) { if ($package{'Package'} eq "browser-plugin-vlc") { print Dump \%package; } }