Tags `url` do BBCode quebram se o texto envolvido terminar em URL com componente após o host

Prioridade/Severidade:

Média

Plataforma

SO Navegador
Windows 11 Google Chrome 112.0.5615.138
Ubuntu 22.04 Google Chrome 112.0.5615.49
macOS Ventura Google Chrome 112.0.5615.137

(todos desktop)

Descrição:

Sob as seguintes condições, as tags url do BBCode não são renderizadas corretamente nas postagens:

  • O texto envolvido pelas tags termina com um URL
  • Esse URL tem um componente após o componente do host (ou seja, caminho, consulta e/ou fragmento)

Passos para reproduzir:

Faça uma postagem que contenha a seguinte marcação:

[url]http://example.com/[/url]

:bug: A marcação não é renderizada como esperado:

image

Comportamento esperado:

A marcação é renderizada como:

image

Contexto adicional

Consigo reproduzir a falha em try.discourse.org no “modo seguro”.


Alguns exemplos adicionais de tratamento incorreto de texto que termina em URL com caminho:

Marcação:

[url]http://example.com/foo[/url]
[url]http://example.com/foo/[/url]
[url=http://example.com/]http://example.com/[/url]
[url=http://example.com/]foo http://example.com/[/url]

Renderizado:


Originalmente reportado em Old url markup not migrated to new forum - Website and Forum - Arduino Forum

Temos muitas postagens que foram escritas em uma época em que essa marcação era renderizada corretamente (antes da migração do framework SMF para o Discourse).

3 curtidas

Tenho isso confirmado como um bug principal que esperamos corrigir nas próximas semanas.

Especificamente:

[url]http://example.com[/url] funcionará, no entanto: [url]http://example.com/example[/url] não funciona, a menos que você adicione um espaço final [url]http://example.com/example [/url].

Comecei a analisar as coisas e parece que algo está atrapalhando nosso parser, possivelmente uma regra de escape. Resolveremos isso, obrigado por levantar o problema.

5 curtidas

Não estou muito familiarizado com este código, mas dei uma olhada rápida. Acho que tem algo a ver com o sistema de auto-link. Quando o parser procura pela tag de fechamento de URL [/url], ela já foi incorporada a um link automático.

por exemplo, note que o link automático aqui é para http://example.com/foo%5B/url%5D

http://example.com/foo

É por isso que adicionar o espaço ajuda - ele impede que o link automático inclua o [/url]

:thinking:

6 curtidas

Eu corrigi isso em:

Sinta-se à vontade para revisar / mesclar… é uma correção bastante complicada @per1234 porque suportamos coisas malucas como

[url][b]www.site.com[/b][/url]

5 curtidas

Isso foi tudo corrigido agora :confetti_ball:

[url]http://example.com/foo[/url]
[url]http://example.com/foo/[/url]
[url=http://example.com/]http://example.com/[/url]
[url=http://example.com/]foo http://example.com/[/url]

http://example.com/foo
http://example.com/foo/
http://example.com/
foo http://example.com/

@per1234 você já deve estar com a correção implantada, nos avise se estiver tudo certo!

Obrigado por reportar!

1 curtida

Muito obrigado pela resolução louvavelmente rápida sam!

3 curtidas

Este tópico foi automaticamente fechado após 5 dias. Novas respostas não são mais permitidas.