Merge pull request #4299 from wp-a/fix/xai-oauth-unsafe-base-url-components
fix(xai): reject empty base URL queries
This commit is contained in:
2 files changed
+10
-1
No files matched your search
@@ -306,7 +306,7 @@ func normalizeKnownBaseURLPath(raw string) (string, error) {
|
||||
if parsed.User != nil {
|
||||
return "", errors.New("base URL must not include userinfo")
|
||||
}
|
||||
if parsed.RawQuery != "" {
|
||||
if parsed.ForceQuery || parsed.RawQuery != "" {
|
||||
return "", errors.New("base URL must not include a query")
|
||||
}
|
||||
if parsed.Fragment != "" {
|
||||
|
||||
@@ -166,6 +166,14 @@ func TestValidateBaseURLAllowsPublicThirdPartyGrokAPI(t *testing.T) {
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestValidateBaseURLsRejectEmptyQueryDelimiter(t *testing.T) {
|
||||
_, err := ValidateBaseURL("https://grok.example.test/v1?")
|
||||
require.Error(t, err)
|
||||
|
||||
_, err = ValidateTrustedBaseURL("https://api.x.ai/v1?")
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
func TestBuildResponsesURLWithValidatorUsesCallerPolicy(t *testing.T) {
|
||||
validator := func(raw string) (string, error) {
|
||||
return urlvalidator.ValidateURLFormat(raw, true)
|
||||
@@ -192,6 +200,7 @@ func TestBuildResponsesURLWithValidatorRejectsBaseURLComponents(t *testing.T) {
|
||||
}{
|
||||
{name: "userinfo", raw: "https://user:secret@grok.example.test/v1"},
|
||||
{name: "query", raw: "https://grok.example.test/v1?token=secret"},
|
||||
{name: "empty query delimiter", raw: "https://grok.example.test/v1?"},
|
||||
{name: "fragment", raw: "https://grok.example.test/v1#secret"},
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user