Error 500 when using a URL with port number in commit or issue comment
Summary
When attempting to make a commit or add an issue comment that includes a URL with a port number, an HTTP Error 500 is returned.
Steps to reproduce
Open a repository in [platform or service name] Create a new commit or open an existing issue Include a URL with a port number in the commit message or issue comment, for example: "Updated readme with new URL: http://example.com:8080" or "I encountered an issue with the URL http://example.com:8080" Attempt to commit the changes or add the comment Notice that an HTTP Error 500 is returned
Expected Result: The commit or issue comment should be successful, with the URL included in the message.
Actual Result: An HTTP Error 500 is returned, preventing the commit or issue comment from being made.
Additional Information:
- The issue occurs consistently, regardless of the URL or the port number used.
- The issue occurs both when making a commit and when adding an issue comment.
- Other types of commits or issue comments (e.g., adding files, modifying code, adding plain text) do not result in an error.
- The issue may be related to the service's handling of URLs with ports.
Example Project
What is the current bug behavior?
Processing by Projects::CommitsController#show as HTML
Parameters: {"namespace_id"=>"F3234202", "project_id"=>"Brm-Cloud", "id"=>"master"}
Completed 200 OK in 102ms (Views: 0.2ms | ActiveRecord: 5.3ms | Elasticsearch: 0.0ms | Allocations: 17597)
Completed 500 Internal Server Error in 69ms (ActiveRecord: 6.7ms | Elasticsearch: 0.0ms | Allocations: 29137)
Addressable::URI::InvalidURIError (Invalid port number: "-px1em5iu78fmog"):
lib/banzai/filter/external_link_filter.rb:109:in `add_malicious_tooltip!'
lib/banzai/filter/external_link_filter.rb:29:in `block in call'
lib/banzai/filter/external_link_filter.rb:12:in `call'
lib/banzai/pipeline/base_pipeline.rb:23:in `block (2 levels) in singleton class'
lib/banzai/renderer.rb:130:in `render_result'
lib/banzai/renderer.rb:166:in `cacheless_render'
lib/banzai/renderer.rb:52:in `cacheless_render_field'
app/models/concerns/cache_markdown_field.rb:56:in `rendered_field_content'
app/models/concerns/cache_markdown_field.rb:65:in `block in refresh_markdown_cache'
app/models/concerns/cache_markdown_field.rb:62:in `to_h'
app/models/concerns/cache_markdown_field.rb:62:in `refresh_markdown_cache'
app/models/concerns/cache_markdown_field.rb:75:in `refresh_markdown_cache!'
lib/banzai/renderer.rb:42:in `render_field'
lib/banzai.rb:20:in `render_field'
lib/banzai/object_renderer.rb:53:in `block in render_documents'
app/models/commit_collection.rb:24:in `each'
app/models/commit_collection.rb:24:in `each'
lib/banzai/object_renderer.rb:52:in `map'
lib/banzai/object_renderer.rb:52:in `render_documents'
lib/banzai/object_renderer.rb:35:in `render'
lib/banzai/commit_renderer.rb:10:in `block in render'
lib/banzai/commit_renderer.rb:10:in `each'
lib/banzai/commit_renderer.rb:10:in `render'
app/controllers/concerns/renders_commits.rb:28:in `prepare_commits_for_rendering'
app/controllers/concerns/renders_commits.rb:20:in `set_commits_for_rendering'
app/controllers/projects/commits_controller.rb:92:in `set_commits'
app/controllers/application_controller.rb:583:in `block in allow_gitaly_ref_name_caching'
lib/gitlab/gitaly_client.rb:352:in `allow_ref_name_caching'
app/controllers/application_controller.rb:582:in `allow_gitaly_ref_name_caching'
ee/lib/gitlab/ip_address_state.rb:10:in `with'
ee/app/controllers/ee/application_controller.rb:46:in `set_current_ip_address'
app/controllers/application_controller.rb:534:in `set_current_admin'
lib/gitlab/session.rb:11:in `with_session'
app/controllers/application_controller.rb:525:in `set_session_storage'
lib/gitlab/i18n.rb:107:in `with_locale'
lib/gitlab/i18n.rb:113:in `with_user_locale'
app/controllers/application_controller.rb:513:in `set_locale'
app/controllers/application_controller.rb:507:in `set_current_context'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
lib/gitlab/middleware/memory_report.rb:13:in `call'
lib/gitlab/middleware/speedscope.rb:13:in `call'
lib/gitlab/database/load_balancing/rack_middleware.rb:23:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
lib/gitlab/metrics/web_transaction.rb:46:in `run'
lib/gitlab/metrics/rack_middleware.rb:16:in `call'
lib/gitlab/jira/middleware.rb:19:in `call'
lib/gitlab/middleware/go.rb:20:in `call'
lib/gitlab/etag_caching/middleware.rb:21:in `call'
lib/gitlab/middleware/query_analyzer.rb:11:in `block in call'
lib/gitlab/database/query_analyzer.rb:37:in `within'
lib/gitlab/middleware/query_analyzer.rb:11:in `call'
lib/gitlab/middleware/multipart.rb:173:in `call'
lib/gitlab/middleware/read_only/controller.rb:50:in `call'
lib/gitlab/middleware/read_only.rb:18:in `call'
lib/gitlab/middleware/same_site_cookies.rb:27:in `call'
lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
lib/gitlab/middleware/request_context.rb:21:in `call'
lib/gitlab/middleware/webhook_recursion_detection.rb:15:in `call'
config/initializers/fix_local_cache_middleware.rb:11:in `call'
lib/gitlab/middleware/compressed_json.rb:37:in `call'
lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call'
lib/gitlab/middleware/sidekiq_web_static.rb:20:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:77:in `call'
lib/gitlab/middleware/release_env.rb:13:in `call'
Relevant logs and/or screenshots
Output of checks
Edited by Arihant