Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Fiddle::Pointer#[]= copies beyond the source pointer size

Aberta
#214 2 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
52/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
ruby
Domínio
backend

Direção de pesquisa

Comece executando a reprodução em Ruby no issue e inspecione a implementação de Fiddle::Pointer#[]= para rastrear como um source Pointer é copiado. Adicione cobertura de regressão para um source Pointer menor que o intervalo de destino solicitado e verifique então que os bytes além do source Pointer não são copiados.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

require "fiddle"

include Fiddle

dst = Pointer.malloc(32, RUBY_FREE)
src = Pointer.malloc(4, RUBY_FREE)

dst[0, 32] = "\x00" * 32
src[0, 4] = "\xAA\xBB\xCC\xDD"

# src is only 4 bytes, but 16 bytes are copied.
dst[0, 16] = src

puts dst.to_str(32)
        .bytes
        .first(16)
        .map { |b| "%02x" % b }
        .join(" ")

# aa bb cc dd ad 78 00 00 d8 2a a1 98 ad 78 00 00
# (In my environment)
Linguagem predominante
Ruby
Estrelas
195
Forks
53
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

  • Inclui um Dockerfile ou arquivo Docker Compose
  • Sem modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de ruby/fiddle

Todas as issues de ruby/fiddle

Issues semelhantes

Mais issues de Ruby

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.