X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=decodekey.c;h=be80151d2822c31ddef27de3dfe6cfbfc1d42368;hb=4e785b6122f020d1ce1a31af8001316162051183;hp=522ad901383dd6a217b0ef5ed2320a93e3d51f8b;hpb=7fd2267eca87bd9bcfe5e66e95e2e683bda1533b;p=onak.git diff --git a/decodekey.c b/decodekey.c index 522ad90..be80151 100644 --- a/decodekey.c +++ b/decodekey.c @@ -82,6 +82,10 @@ onak_status_t parse_subpackets(unsigned char *data, size_t len, packetlen <<= 8; packetlen |= data[offset++]; } + /* Check the supplied length is within the remaining data */ + if (packetlen == 0 || (packetlen + offset) > length) { + return ONAK_E_INVALID_PKT; + } switch (data[offset] & 0x7F) { case OPENPGP_SIGSUB_CREATION: /*