[pve-devel] [PATCH proxmox-apt 2/2] fix #4653: (In)Release file: improve handling of special suites
Fabian Grünbichler
f.gruenbichler at proxmox.com
Wed Apr 12 09:17:58 CEST 2023
APT doesn't mind a repository with either "/" or "./" as suite/distribution,
such as
deb https://example.com/debian ./
in that case, the 'dists' part of the URL and the trailing slash (which would
be encoded as '_') is dropped in the file name in '/var/lib/apt/lists/'.
Other suite values with a trailing or leading '/' are rejected with an error by APT:
E: Malformed entry 1 in sources file /etc/apt/sources.list.d/test.list (absolute Suite Component)
E: The list of sources could not be read.
so this should be the only special case requiring handling.
Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
src/repositories/repository.rs | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/repositories/repository.rs b/src/repositories/repository.rs
index 7a19af4..ef77186 100644
--- a/src/repositories/repository.rs
+++ b/src/repositories/repository.rs
@@ -365,12 +365,18 @@ fn release_filename(uri: &str, suite: &str, detached: bool) -> PathBuf {
let encoded_uri = uri_to_filename(uri);
let filename = if detached { "Release" } else { "InRelease" };
- path.push(format!(
- "{}_dists_{}_{}",
- encoded_uri,
- suite.replace('/', "_"), // e.g. for buster/updates
- filename,
- ));
+ if suite == "/" {
+ path.push(format!("{encoded_uri}_{filename}"));
+ } else if suite == "./" {
+ path.push(format!("{encoded_uri}_._{filename}"));
+ } else {
+ path.push(format!(
+ "{}_dists_{}_{}",
+ encoded_uri,
+ suite.replace('/', "_"), // e.g. for buster/updates
+ filename,
+ ));
+ }
path
}
--
2.30.2
More information about the pve-devel
mailing list