skills/vulnerability-patterns/uninitialized-storage-pointer/SKILL.md
- Solidity version <0.5.0
npx skillsauth add apegurus/solidity-argus uninitialized-storage-pointerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
storage or memory data locationstorage, pointing to slot 0// Solidity <0.5.0 only
pragma solidity ^0.4.24;
contract Registry {
address public owner; // Stored in slot 0
uint256 public totalUsers; // Stored in slot 1
struct User {
address addr;
uint256 balance;
}
User[] public users;
function addUser(address _addr, uint256 _balance) external {
// No data location specified — defaults to storage
// Points to slot 0 (owner) and slot 1 (totalUsers)
User u; // u.addr aliases slot 0 (owner)
u.addr = _addr; // Overwrites owner!
u.balance = _balance; // Overwrites totalUsers!
users.push(u);
}
}
storage or memory keywordstorage at slot 0 — writes to it overwrite the first state variablesmemory (e.g., User memory u)storage and intentionally points to a known storage locationmemory or storage to all local complex-type declarationsfunction addUser(address _addr, uint256 _balance) external {
User memory u; // Explicit memory — no storage aliasing
u.addr = _addr;
u.balance = _balance;
users.push(u);
}
testing
Specialist profile for mechanically applying the attack-vector deck and classifying vectors as skip, drop, or investigate.
tools
Specialist profile for libraries, helpers, base contracts, adapters, encoders, wrappers, and integration glue.
testing
Specialist profile for rounding, scale, decimal, downcast, and arithmetic accounting edge cases.
testing
Specialist profile for extracting conservation laws and state couplings, then searching for violating paths.