Implementation note on the same function. metaIndex::swapLoad (apt-
pkg/metaindex.cc:122-137) swaps eight fields (SignedBy, Suite, Codename,
Date, ValidUntil, SupportsAcquireByHash, Entries, LoadedSuccessfully).
It then assigns four others the other way round: "OldMetaIndex->Origin =
Origin;" and the same for Label, Version and DefaultPin. The caller
deletes the old object right after (acquire-item.cc:1871-1882), so those
four assignments have no effect, and the surviving parser keeps the
values of the downloaded, older Release for those fields, not the values
of the kept local one.

I found no visible consequence in 3.2.0. The code that compares those
fields, the "Repository ... changed its Origin/Label/..." check, only
runs when LastMetaIndexParser is not null (acquire-item.cc:1899), and
this path sets it to null. The four lines probably want to be "Origin =
OldMetaIndex->Origin;" and so on, or to be swapped like the others. A
fix for the SignedBy problem in this bug touches the same function.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2172092

Title:
  apt update: bogus "Missing Signed-By" notice, and no message, when the
  mirror serves an older Release than the local one

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/2172092/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to