asn1: Fix ENOMEM NULL deref
This commit is contained in:
@@ -127,14 +127,14 @@ free_type (const char *name, const Type *t, int preserve)
|
|||||||
case TSequenceOf: {
|
case TSequenceOf: {
|
||||||
char *n;
|
char *n;
|
||||||
|
|
||||||
fprintf (codefile, "while((%s)->len){\n", name);
|
fprintf (codefile, "if ((%s)->val)\nwhile((%s)->len){\n", name, name);
|
||||||
if (asprintf (&n, "&(%s)->val[(%s)->len-1]", name, name) < 0 || n == NULL)
|
if (asprintf (&n, "&(%s)->val[(%s)->len-1]", name, name) < 0 || n == NULL)
|
||||||
errx(1, "malloc");
|
errx(1, "malloc");
|
||||||
free_type(n, t->subtype, FALSE);
|
free_type(n, t->subtype, FALSE);
|
||||||
fprintf(codefile,
|
fprintf(codefile,
|
||||||
"(%s)->len--;\n"
|
"(%s)->len--;\n"
|
||||||
"}\n",
|
"} else (%s)->len = 0;\n",
|
||||||
name);
|
name, name);
|
||||||
fprintf(codefile,
|
fprintf(codefile,
|
||||||
"free((%s)->val);\n"
|
"free((%s)->val);\n"
|
||||||
"(%s)->val = NULL;\n", name, name);
|
"(%s)->val = NULL;\n", name, name);
|
||||||
|
Reference in New Issue
Block a user