diff -up shadow-4.1.5.1/lib/groupio.c.merge-group shadow-4.1.5.1/lib/groupio.c --- shadow-4.1.5.1/lib/groupio.c.merge-group 2011-02-16 21:32:24.000000000 +0100 +++ shadow-4.1.5.1/lib/groupio.c 2013-01-29 13:56:43.049275513 +0100 @@ -330,12 +330,12 @@ static /*@null@*/struct commonio_entry * /* Concatenate the 2 lines */ new_line_len = strlen (gr1->line) + strlen (gr2->line) +1; - new_line = (char *)malloc ((new_line_len + 1) * sizeof(char*)); + new_line = (char *)malloc (new_line_len + 1); if (NULL == new_line) { errno = ENOMEM; return NULL; } - snprintf(new_line, new_line_len, "%s\n%s", gr1->line, gr2->line); + snprintf(new_line, new_line_len + 1, "%s\n%s", gr1->line, gr2->line); new_line[new_line_len] = '\0'; /* Concatenate the 2 list of members */ @@ -353,7 +353,7 @@ static /*@null@*/struct commonio_entry * members++; } } - new_members = (char **)malloc ( (members+1) * sizeof(char*) ); + new_members = (char **)calloc (members+1, sizeof(char*)); if (NULL == new_members) { free (new_line); errno = ENOMEM;