Skip to content

net/url: Malformed query code breaks backwards compatibility #30903

@jefferai

Description

@jefferai

What version of Go are you using (go version)?

1.12 and now 1.11.6

We have two projects (Consul and Vault) that implement a K/V store with path-based URLs. As Go didn't check for control characters in previous releases we have some users that ended up writing keys at locations with various control characters due to bad key/path generation code.

We implemented a check ourselves to filter such paths out but for those users that needed to be able to access data they'd already written the check could be turned off. With Go 1.12 out we've been trying to figure out a decent way to work around the fact that these paths now throw errors from within Go. It's not trivial given that the key is used for things like AEAD tag data.

Unfortunately the updates in Go 1.12 and now 1.11.6 mean our current plan of sticking with the 1.11.x series until we have sorted something out isn't viable, and we still don't have a good option going forward anyways.

I realize that due to the security nature of the previous behavior golang's backwards compatibility promise doesn't apply. However, it would still be very nice if those of us that need to be able to control this behavior for backwards compatibility reasons had a way to do so. I'm happy to work up a patch if it's likely to be accepted.

Pinging @bradfitz

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeWaitingForInfoIssue is not actionable because of missing required information, which needs to be provided.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions