peass-ng/PEASS-ng · error · ArgumentException
too few objects in input vector
Error message
too few objects in input vector
What it means
GetObjFromVector extracts the Asn1Object at a given index from an Asn1EncodableVector while DerExternal parses its fields. If the vector has no element at that index (Count <= index), the External structure is missing a required field, so ArgumentException is thrown.
Source
Thrown at winPEAS/winPEASexe/winPEAS/3rdParty/BouncyCastle/asn1/DerExternal.cs:187
}
}
public Asn1Object ExternalContent
{
get { return externalContent; }
set { this.externalContent = value; }
}
public DerInteger IndirectReference
{
get { return indirectReference; }
set { this.indirectReference = value; }
}
private static Asn1Object GetObjFromVector(Asn1EncodableVector v, int index)
{
if (v.Count <= index)
throw new ArgumentException("too few objects in input vector", "v");
return v[index].ToAsn1Object();
}
private static void WriteEncodable(MemoryStream ms, Asn1Encodable e)
{
if (e != null)
{
byte[] bs = e.GetDerEncoded();
ms.Write(bs, 0, bs.Length);
}
}
}
}
View on GitHub (pinned to 53fb989abc)
Solutions
- Check vector.Count > offset before calling the DerExternal vector constructor
- Re-parse the source data — too few objects means the encoding is truncated or malformed
- Ensure the offset argument points at the first External field, not beyond the vector
Example fix
// before
var ext = new DerExternal(vector, offset);
// after
if (vector.Count <= offset)
throw new FormatException("External vector truncated");
var ext = new DerExternal(vector, offset); Defensive patterns
Strategy: validation
Validate before calling
if (vector == null || vector.Count <= offset)
throw new FormatException("Vector too short to contain an External");
var ext = new DerExternal(vector, offset); Type guard
static bool HasEnoughElements(Asn1EncodableVector v, int index) => v != null && v.Count > index;
Try / catch
try { var ext = new DerExternal(vector, offset); }
catch (ArgumentException ex) when (ex.Message.Contains("too few objects")) {
// truncated or misaligned External vector
} Prevention
- Check Count against the offset before constructing
- Ensure the DER source is fully read — truncation produces short vectors
- Parse Externals from a DerSequence via GetInstance rather than manual vectors when possible
When it happens
Trigger: Constructing DerExternal(Asn1EncodableVector, int) where the vector is too short to supply the expected fields at the starting offset — e.g. an empty vector, or offset >= vector.Count.
Common situations: Passing a truncated or empty vector to the DerExternal vector constructor; parsing truncated BER streams where optional/required External fields were dropped; using the wrong offset so it points past the end.
Related errors
- ENUMERATED has zero length
- input vector too large
- No tagged object found in vector. Structure doesn't seem to
- malformed object
- must be in the range 0 to 7
AI-assisted analysis of peass-ng/PEASS-ng@53fb989abc (2026-09-02).
Data as JSON: /api/errors/35c1deb05fd839a0.
Report an issue: GitHub.