diff --git a/ChangeLog b/ChangeLog index 9bdaabefb06518e466ee4aa0430fcc9850defb8d..b9b39af02460e7c4a47384698c4ae6636f36a447 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Mar 30 12:15:46 EST 2006 Daniel Veillard + + * src/virsh.c: catching memory allocation error and existing, as + pointed by Jim Meyering + Wed Mar 29 16:36:24 CEST 2006 Daniel Veillard * doc/*: rebuilt diff --git a/src/virsh.c b/src/virsh.c index 785f544d7ace6ddfe92ca9580fd28aec49474f52..e10bf1c8ad974295e7d3fb88b7d7f2548205d253 100644 --- a/src/virsh.c +++ b/src/virsh.c @@ -311,6 +311,11 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED) return FALSE; } ids = malloc(sizeof(int) * maxid); + if (ids == NULL) { + fprintf(stderr, "Failed to allocate %d bytes\n", + (int) sizeof(int) * maxid); + exit(1); + } virConnectListDomains(ctl->conn, &ids[0], maxid); vshPrint(ctl, VSH_HEADER, "%3s %-20s %s\n", "Id", "Name", "State"); @@ -1284,6 +1289,10 @@ vshCommandGetToken(vshControl * ctl, char *str, char **end, char **res) return VSH_TK_END; *res = malloc(sz + 1); + if (*res == NULL) { + fprintf(stderr, "Failed to allocate %d bytes\n", sz + 1); + exit(1); + } memcpy(*res, tkstr, sz); *(*res + sz) = '\0'; @@ -1379,6 +1388,11 @@ vshCommandParse(vshControl * ctl, char *cmdstr) if (opt) { /* save option */ vshCmdOpt *arg = malloc(sizeof(vshCmdOpt)); + if (arg == NULL) { + fprintf(stderr, "Failed to allocate %d bytes\n", + (int) sizeof(vshCmdOpt)); + exit(1); + } arg->def = opt; arg->data = tkdata; @@ -1405,6 +1419,12 @@ vshCommandParse(vshControl * ctl, char *cmdstr) if (cmd) { vshCmd *c = malloc(sizeof(vshCmd)); + if (c == NULL) { + fprintf(stderr, "Failed to allocate %d bytes\n", + (int) sizeof(vshCmd)); + exit(1); + } + c->opts = first; c->def = cmd; c->next = NULL; @@ -1646,6 +1666,11 @@ vshReadlineOptionsGenerator(const char *text, int state) continue; } res = malloc(strlen(name) + 3); + if (res == NULL) { + fprintf(stderr, "Failed to allocate %d bytes\n", + (int) strlen(name) + 3); + exit(1); + } sprintf(res, "--%s", name); return res; }