diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-02-25 11:48:17 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-02-25 12:44:41 +0100 |
commit | 0043558082d619d0dc51ef27acda8ebb299c2f2c (patch) | |
tree | f0d3097b7b9202e8b940c564422583c1b48ff83d /guix/scripts | |
parent | a65e2a02fcf6333114cf5cd0e60a3f2f694e391e (diff) |
publish: Do not publish nars for invalid store items.
Before that, /nar requests could succeed if the requested store item
exists but is invalid (although such requests were unlikely because the
corresponding narinfo request would have failed.)
* guix/scripts/publish.scm (render-nar): Add 'store' parameter. Use
'valid-path?' instead of 'file-exists?'.
(make-request-handler): Adjust 'render-nar' call accordingly.
* tests/publish.scm ("/nar/invalid"): New test.
Diffstat (limited to 'guix/scripts')
-rw-r--r-- | guix/scripts/publish.scm | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index 3d197384d6..5306afcf07 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -208,13 +208,13 @@ References: ~a~%" (narinfo-string store store-path (force %private-key)) <>))))) -(define (render-nar request store-item) +(define (render-nar store request store-item) "Render archive of the store path corresponding to STORE-ITEM." (let ((store-path (string-append %store-directory "/" store-item))) ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will ;; interpret the byte stream as UTF-8 and arbitrarily change invalid byte ;; sequences. - (if (file-exists? store-path) + (if (valid-path? store store-path) (values '((content-type . (application/x-nix-archive (charset . "ISO-8859-1")))) ;; XXX: We're not returning the actual contents, deferring @@ -314,7 +314,7 @@ blocking." (render-narinfo store request hash)) ;; /nar/<store-item> (("nar" store-item) - (render-nar request store-item)) + (render-nar store request store-item)) (_ (not-found request))) (not-found request)))) |