aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpkid/rpki/publication.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/rpkid/rpki/publication.py b/rpkid/rpki/publication.py
index bd320278..d4e77de6 100644
--- a/rpkid/rpki/publication.py
+++ b/rpkid/rpki/publication.py
@@ -236,10 +236,13 @@ class publication_object_elt(rpki.xml_utils.base_elt, publication_namespace):
Convert a URI to a local filename.
"""
if not self.uri.startswith("rsync://"):
- raise rpki.exceptions.BadURISyntax
- filename = self.gctx.publication_base + self.uri[len("rsync://"):]
+ raise rpki.exceptions.BadURISyntax, self.uri
+ u = 0
+ for i in xrange(4):
+ u = self.uri.index("/", u + 1)
+ filename = self.gctx.publication_base.rstrip("/") + self.uri[u:]
if filename.find("//") >= 0 or filename.find("/../") >= 0 or filename.endswith("/.."):
- raise rpki.exceptions.BadURISyntax
+ raise rpki.exceptions.BadURISyntax, filename
return filename
class certificate_elt(publication_object_elt):