diff --git a/lib/asn1/gen_encode.c b/lib/asn1/gen_encode.c index cf58b9652..ff9c03629 100644 --- a/lib/asn1/gen_encode.c +++ b/lib/asn1/gen_encode.c @@ -292,6 +292,11 @@ encode_type (const char *name, const Type *t, const char *tmpstr) "size_t elen, totallen = 0;\n" "int eret;\n"); + fprintf(codefile, + "if ((%s)->len > UINT_MAX/sizeof(val[0]))\n" + "return ERANGE;\n", + name); + fprintf(codefile, "val = malloc(sizeof(val[0]) * (%s)->len);\n" "if (val == NULL && (%s)->len != 0) return ENOMEM;\n",