From 00bd45ed0175b4fc07f497bf261abb310bcd9621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Mon, 16 May 2005 08:53:34 +0000 Subject: [PATCH] check allocation errors git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15144 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/com_err/parse.y | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/com_err/parse.y b/lib/com_err/parse.y index e026e3657..b5cd13aba 100644 --- a/lib/com_err/parse.y +++ b/lib/com_err/parse.y @@ -78,15 +78,13 @@ id : ID STRING et : ET STRING { base = name2number($2); - strncpy(name, $2, sizeof(name)); - name[sizeof(name) - 1] = '\0'; + strlcpy(name, $2, sizeof(name)); free($2); } | ET STRING STRING { base = name2number($2); - strncpy(name, $3, sizeof(name)); - name[sizeof(name) - 1] = '\0'; + strlcpy(name, $3, sizeof(name)); free($2); free($3); } @@ -104,21 +102,30 @@ statement : INDEX NUMBER { free(prefix); asprintf (&prefix, "%s_", $2); + if (prefix == NULL) + errx(1, "malloc"); free($2); } | PREFIX { prefix = realloc(prefix, 1); + if (prefix == NULL) + errx(1, "malloc"); *prefix = '\0'; } | EC STRING ',' STRING { struct error_code *ec = malloc(sizeof(*ec)); + + if (ec == NULL) + errx(1, "malloc"); ec->next = NULL; ec->number = number; if(prefix && *prefix != '\0') { asprintf (&ec->name, "%s%s", prefix, $2); + if (ec->name == NULL) + errx(1, "malloc"); free($2); } else ec->name = $2;