In generation of remove_TYPE: if you just removed the last element,

you must not memmove memory beyond the array.
From Andrew Bartlett


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18218 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-10-04 10:18:10 +00:00
parent 2f1de465c7
commit 8ddc3d0462

View File

@@ -105,8 +105,10 @@ generate_type_seq (const Symbol *s)
"\treturn ASN1_OVERRUN;\n"
"free_%s(&data->val[element]);\n"
"data->len--;\n"
"memmove(&data->val[element], &data->val[element + 1], \n"
"\tsizeof(data->val[0]) * data->len);\n"
/* don't move if its the last element */
"if (element < data->len)\n"
"\tmemmove(&data->val[element], &data->val[element + 1], \n"
"\t\tsizeof(data->val[0]) * data->len);\n"
/* resize but don't care about failures since it doesn't matter */
"ptr = realloc(data->val, data->len * sizeof(data->val[0]));\n"
"if (ptr) data->val = ptr;\n"