plistlib inherits expat's newline-normalizing behavior, which can corrupt data in XML plists
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
Bug report
Bug description:
This is just a special case of #84561 but it came up in the specific circumstance of XML plists in MOPUp, here: https://github.com/glyph/MOPUp/pull/448/files#r2280646662
I also discovered that it is possible to get the unmodified data, by changing plistlib._PlistParser.handle_data to look like this:
def handle_data(self, data):
ctx = self.parser.GetInputContext()
if data == '\n' and ctx[0:1] != b'\n':
data = ctx[0:1].decode("utf-8")
self.data.append(data)
so we are not totally bound by the whims of Expat here; these types of bug could be fixed.
CPython versions tested on:
3.12, 3.13, 3.11
Operating systems tested on:
macOS
Linked PRs
- gh-148305
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece com plistlib._PlistParser.handle_data e o comportamento do contexto de entrada descrito no relatório. Verifique como os dados plist XML são normalizados atualmente e garanta que os dados não modificados sejam preservados; verifique o PR vinculado gh-148305 antes de começar, pois esse trabalho pode já estar em andamento.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- backend
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 30/100