fileserver: map invalid path errors to fs.ErrInvalid, and return 400 …#7017
Merged
mholt merged 1 commit intocaddyserver:masterfrom May 13, 2025
Merged
Conversation
…for any invalid path errors. (close caddyserver#7008)
mholt
approved these changes
May 13, 2025
Member
mholt
left a comment
There was a problem hiding this comment.
Ah thanks, this is pretty simple. Looks like a good patch.
1 task
mohammed90
pushed a commit
to cedricziel/caddy
that referenced
this pull request
Aug 29, 2025
…for any invalid path errors. (close caddyserver#7008) (caddyserver#7017)
Member
|
@Compy Could you take a look at this change relative to this report: https://caddy.community/t/nextcloud-setup-broken-after-update-to-2-10-2/33140 It might be that we are applying this error a bit too generously... (or, maybe we are just now returning an error where before a bug was being covered up?) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…for any invalid path errors. (close #7008 #7007)
Background
Currently when using the static file server, when injecting a null byte into the request path, the server returns a 500. Edge infrastructure such as nginx, Apache, AWS ELB and Cloudflare treat these types of errors with a 400 Bad Request, which is more indicative of a bad input compared to an application-level 500 response.
This change adds error handling for
fs.PathErrorto themapDirOpenError()function by mapping it tofs.ErrInvalid, and modifies the caller (ServeHTTP()) to explicitly returnhttp.StatusBadRequestforfs.ErrInvaliderrors.Local tests are positive. Unit tests are also passing. Tested on both MacOS and Linux/Ubuntu 24.
Before the change:
After the change: