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

  1. Pass a non-null IDigest instance.
  2. Resolve the base digest via DigestUtilities.GetDigest and check for null/exceptions first.
  3. 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

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.