0xMiden / 0xMiden/turnkey-sdk

hexToBytes silently converts invalid hex characters to zero bytes

Aberta Para iniciantes
#18 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
JavaScript
Estrelas
3
Forks
4
Merge médio
23min
PRs com merge (30d)
2

Descrição

`hexToBytes()` only checks for even length before parsing each byte with `parseInt(..., 16)`. Invalid hex pairs return `NaN`, and assigning `NaN` into a `Uint8Array` silently stores `0`.

File evidence:

- `src/utils.ts` strips an optional `0x` prefix and checks `hex.length % 2`.
- It then assigns `parseInt(`${hex[i]}${hex[i + 1]}`, 16)` into a `Uint8Array` without checking whether the result is `NaN`.
- The helper is used by `fromTurnkeySig()` for signature bytes and by `evmPkToCommitment()` for public key commitment derivation.

Examples like `0xZZZZ` or `0x12ZZ` therefore produce zero bytes instead of throwing. Invalid hex input should be rejected before it can affect signature or key material.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

O problema está em `src/utils.ts` na função `hexToBytes`. Comece lendo a função para entender a lógica de análise. Adicione validação para verificar se `parseInt` retorna `NaN` e lance um erro para caracteres hexadecimais inválidos. Teste com os exemplos fornecidos (`0xZZZZ`, `0x12ZZ`) para garantir que agora lancem um erro. Procure por testes existentes para esta função ou funções relacionadas como `fromTurnkeySig` e `evmPkToCommitment` para atualizá-los.

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

Avaliação

Stack de tecnologia
typescript
Domínio
backend-api-design, security
Tipo de issue
Bug
Dificuldade
2/5
Tempo estimado
1-3 horas
Status de atividade
Ativa
Clareza
Claramente especificada
Facilidade para iniciantes
75/100

Receba novas issues na sua caixa de entrada

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