Release v2.1.0: segurança, testes, CI e documentação#3
Merged
NullSablex merged 5 commits intomasterfrom Feb 23, 2026
Merged
Conversation
- 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Segurança (19 findings corrigidos)
Args::get()(CWE-125), ponteiro nulo emget_ref()(CWE-416)allot()(CWE-190), packed string over-read (CWE-125), AtomicPtr ordering (CWE-362)UnsafeCell(CWE-362),into_sized_buffer()sem limite (CWE-120)Box::leak(CWE-401)Detalhes completos no CHANGELOG.md.
CI/CD
i686-unknown-linux-gnu+i686-pc-windows-msvccargo clippy --all-targets -- -D warningscargo auditpara detecção de CVEs em dependências.so/.dll) em push para masterDocumentação
Test plan
cargo test— 32 unitários + 27 doctests passandocargo clippy --all-targets -- -D warnings— limpo