check allocation errors

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15144 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2005-05-16 08:53:34 +00:00
parent 10c8d0da80
commit 00bd45ed01

View File

@@ -78,15 +78,13 @@ id : ID STRING
et : ET STRING et : ET STRING
{ {
base = name2number($2); base = name2number($2);
strncpy(name, $2, sizeof(name)); strlcpy(name, $2, sizeof(name));
name[sizeof(name) - 1] = '\0';
free($2); free($2);
} }
| ET STRING STRING | ET STRING STRING
{ {
base = name2number($2); base = name2number($2);
strncpy(name, $3, sizeof(name)); strlcpy(name, $3, sizeof(name));
name[sizeof(name) - 1] = '\0';
free($2); free($2);
free($3); free($3);
} }
@@ -104,21 +102,30 @@ statement : INDEX NUMBER
{ {
free(prefix); free(prefix);
asprintf (&prefix, "%s_", $2); asprintf (&prefix, "%s_", $2);
if (prefix == NULL)
errx(1, "malloc");
free($2); free($2);
} }
| PREFIX | PREFIX
{ {
prefix = realloc(prefix, 1); prefix = realloc(prefix, 1);
if (prefix == NULL)
errx(1, "malloc");
*prefix = '\0'; *prefix = '\0';
} }
| EC STRING ',' STRING | EC STRING ',' STRING
{ {
struct error_code *ec = malloc(sizeof(*ec)); struct error_code *ec = malloc(sizeof(*ec));
if (ec == NULL)
errx(1, "malloc");
ec->next = NULL; ec->next = NULL;
ec->number = number; ec->number = number;
if(prefix && *prefix != '\0') { if(prefix && *prefix != '\0') {
asprintf (&ec->name, "%s%s", prefix, $2); asprintf (&ec->name, "%s%s", prefix, $2);
if (ec->name == NULL)
errx(1, "malloc");
free($2); free($2);
} else } else
ec->name = $2; ec->name = $2;