[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: apt: Saves some downloaded packages under truncated filenames



Cyril Brulebois <kibi@debian.org> (2013-09-19):
> Tracked down to: pkgAcqArchive::pkgAcqArchive(), where Parse.FileName()
> returns: "pool/main/c/c"
> 
> Looking further, through debindexfile.cc then debrecords.cc, it
> looks like debRecordParser::FileName() returns a faulty (truncated)
> string.
> 
> Root cause is probably in pkgTagSection::Find(), which I'll try to
> look at later on.

It actually finds what it can, which is faulty because the “Fast scanner
for RFC-822 type header information” (tagfile.cc) failed to read the
stanza properly.

I added some traces to pkgTagSection::Scan(), dumping std::string(Start,Stop)
after both TrimRecord() calls, and got that:
| >>> trimmed record (1) <<<
| Package: cdebconf-newt-terminal
| Source: cdebconf-terminal
| Version: 0.22
| Installed-Size: 43
| Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
| Architecture: amd64
| Provides: cdebconf-terminal
| Depends: cdebconf-newt-udeb (>= 0.146), libc6-udeb (>= 2.17), libnewt0.52
| Description: cdebconf newt plugin to provide a clean terminal
| Description-md5: 4109a053022081b573d864d84d6eb16d
| Section: debian-installer
| Priority: extra
| 
| >>> eof <<<
| >>> trimmed record (2) <<<
| Package: cdebconf-newt-terminal
| Source: cdebconf-terminal
| Version: 0.22
| Installed-Size: 43
| Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
| Architecture: amd64
| Provides: cdebconf-terminal
| Depends: cdebconf-newt-udeb (>= 0.146), libc6-udeb (>= 2.17), libnewt0.52
| Description: cdebconf newt plugin to provide a clean terminal
| Description-md5: 4109a053022081b573d864d84d6eb16d
| Section: debian-installer
| Priority: extra
| Filename: pool/main/c/c
| 
| 
| >>> eof <<<

I guess something should read a bit more to get the full stanza,
otherwise, some fields (Filename here) end up getting truncated.

Good luck fixing the scanner. :-)

Mraw,
KiBi.


Reply to: