peass-ng/PEASS-ng · error · ArgumentNullException
baseDigest
Error message
baseDigest
What it means
Standard ArgumentNullException sentinel raised from the ShortenedDigest constructor when the baseDigest argument is null; the underlying digest is a required dependency, so construction cannot proceed.
Source
Thrown at winPEAS/winPEASexe/winPEAS/3rdParty/BouncyCastle/crypto/digests/ShortenedDigest.cs:28
: IDigest
{
private IDigest baseDigest;
private int length;
/**
* Base constructor.
*
* @param baseDigest underlying digest to use.
* @param length length in bytes of the output of doFinal.
* @exception ArgumentException if baseDigest is null, or length is greater than baseDigest.GetDigestSize().
*/
public ShortenedDigest(
IDigest baseDigest,
int length)
{
if (baseDigest == null)
{
throw new ArgumentNullException("baseDigest");
}
if (length > baseDigest.GetDigestSize())
{
throw new ArgumentException("baseDigest output not large enough to support length");
}
this.baseDigest = baseDigest;
this.length = length;
}
public string AlgorithmName
{
get { return baseDigest.AlgorithmName + "(" + length * 8 + ")"; }
}
public int GetDigestSize()
{View on GitHub (pinned to 53fb989abc)
Solutions
- Pass a non-null IDigest instance.
- Resolve the base digest via DigestUtilities.GetDigest and check for null/exceptions first.
- Validate the algorithm name is supported before constructing.
Example fix
// before var d = new ShortenedDigest(registry[name], 16); // after IDigest baseDigest = registry[name] ?? new Sha256Digest(); var d = new ShortenedDigest(baseDigest, 16);
Defensive patterns
Strategy: type-guard
Validate before calling
if (baseDigest is null) throw new ArgumentNullException(nameof(baseDigest));
Type guard
bool TryCreateShortened(IDigest baseDigest, int length, out ShortenedDigest shortened) { shortened = baseDigest is null ? null : new ShortenedDigest(baseDigest, length); return baseDigest != null; } Try / catch
try { d = new ShortenedDigest(baseDigest, len); }
catch (ArgumentNullException) { d = new ShortenedDigest(new Sha256Digest(), len); } Prevention
- Check lookup results for null before wrapping.
- Use pattern matching (baseDigest is IDigest d) to narrow.
- Fail fast at config load when an algorithm name is unknown.
When it happens
Trigger: new ShortenedDigest(null, length), typically when the base digest is resolved from a lookup that returned null.
Common situations: Algorithm-name lookup (e.g. DigestUtilities.GetDigest failing or a dictionary miss) silently yielding null before wrapping.
Related errors
AI-assisted analysis of peass-ng/PEASS-ng@53fb989abc (2026-09-02).
Data as JSON: /api/errors/68e4fd1e6abae97d.
Report an issue: GitHub.