Skip to content

Release v2.1.0: segurança, testes, CI e documentação#3

Merged
NullSablex merged 5 commits intomasterfrom
ci/cross-platform-builds
Feb 23, 2026
Merged

Release v2.1.0: segurança, testes, CI e documentação#3
NullSablex merged 5 commits intomasterfrom
ci/cross-platform-builds

Conversation

@NullSablex
Copy link
Copy Markdown
Owner

@NullSablex NullSablex commented Feb 23, 2026

Summary

  • Auditoria de segurança completa com correção de 19 vulnerabilidades (CWE) sem breaking changes
  • CI cross-platform i686 (Linux + Windows) com clippy, cargo audit e cache
  • 32 testes unitários + 27 doctests cobrindo args, encoding, error, consts, repr
  • Documentação completa com mdBook (13 capítulos em português)
  • Bump de versão: samp-sdk e samp → 2.1.0

Segurança (19 findings corrigidos)

Severidade Qtd Exemplos
Critical 2 Off-by-one em Args::get() (CWE-125), ponteiro nulo em get_ref() (CWE-416)
High 3 Integer overflow em allot() (CWE-190), packed string over-read (CWE-125), AtomicPtr ordering (CWE-362)
Medium 5 Runtime UB via UnsafeCell (CWE-362), into_sized_buffer() sem limite (CWE-120)
Low 4 OOM protection (CWE-20), memory leak explícito com Box::leak (CWE-401)

Detalhes completos no CHANGELOG.md.

CI/CD

  • Matrix build: i686-unknown-linux-gnu + i686-pc-windows-msvc
  • cargo clippy --all-targets -- -D warnings
  • cargo audit para detecção de CVEs em dependências
  • Upload de artefatos (.so/.dll) em push para master

Documentação

  • mdBook com 13 capítulos: setup, primeiro plugin, natives, tipos Amx, cells/memória, encoding, erros, logging, exemplos avançados, migração, referência API

Test plan

  • cargo test — 32 unitários + 27 doctests passando
  • cargo clippy --all-targets -- -D warnings — limpo
  • Verificar que nenhuma API pública foi quebrada (sem breaking changes)
  • Testar build cross-platform via CI após push

- Adiciona matriz de builds para ubuntu-latest e windows-latest
- Adiciona target i686-pc-windows-msvc para builds Windows
- Instala gcc-multilib para cross-compilação Linux i686
- Desabilita TLS (openssl) do memcache no plugin-example para CI pure Rust
- Migra cache manual (actions/cache@v3) para Swatinem/rust-cache@v2
- Atualiza comandos build/test/clippy para usar --target
- Adiciona upload de artefatos por plataforma (.so Linux, .dll Windows)
- Atualiza ROADMAP.md: seção CI/CD marcada como concluída
- amx.rs: amx() e header() agora retornam Option<NonNull<T>>
  em vez de NonNull::new_unchecked (previne UB com ponteiros nulos)
- amx.rs: release() e Allocator::new() tratam Option corretamente
- exports.rs: assert em from_table() para fn_table nulo
- runtime.rs: assert em get() antes de desreferenciar RUNTIME
- runtime.rs: expect com mensagem em plugin() e plugin_cast()
- runtime.rs: assert em amx_exports() e logger() para server_exports nulo
- native.rs: println! substituído por log::error! no código gerado
- native.rs: unwrap() substituído por expect() com contexto
- interlayer.rs: unwrap() substituído por expect() com contexto
- Aplica cargo fmt em todo o workspace
- Atualiza ROADMAP.md: seção Tratamento de Erros marcada como concluída
Adicionados 21 testes unitários cobrindo componentes isoláveis:
- error.rs: mapeamento de códigos, Display, trait Error
- consts.rs: AmxExecIdx, ServerData, Supports, AmxFlags
- cell/repr.rs: as_cell() para todos os tipos primitivos

Corrigido doctest compile_fail que passou a compilar após
adição de log como dependência direta do samp.

Bump de versões seguindo semver:
- samp-sdk: 1.0.0 → 2.0.0 (breaking: amx/header retornam Option)
- samp-codegen: 1.0.0 → 1.1.0 (melhorias internas)
- samp: 1.0.0 → 2.0.0 (acompanha samp-sdk)
- plugin-example: 1.0.0 → 1.1.0 (ajuste de deps)
Adicionado site de documentação em docs/ com 13 capítulos:
- Introdução, setup e primeiro plugin
- Anatomia, funções nativas e tipo Amx
- Células/memória, encoding e tratamento de erros
- Logging, exemplos avançados
- Guia de migração e referência da API

Construir com: mdbook build docs
Auditoria identificou 19 vulnerabilidades (CWE) no SDK e runtime.
Todas corrigidas sem breaking changes na API pública.

Correções: off-by-one em Args::get(), ponteiro nulo em get_ref(),
integer overflow em allot(), packed string over-read, AtomicPtr
ordering, validação em Ref::new()/from_table()/release()/count(),
OOM protection, Runtime refatorado com UnsafeCell, Box::leak em
natives, bounds check em into_sized_buffer().

Testes: 32 unitários + 27 doctests. CI: cargo audit adicionado.
@NullSablex NullSablex merged commit 2f04c37 into master Feb 23, 2026
2 checks passed
@NullSablex NullSablex deleted the ci/cross-platform-builds branch February 23, 2026 04:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant