L
So hab mal ein bischen das Forum durchforstet und den Code vervollständig: WEnn einer noch nen par Tips performance mäßig oder sicherheit hatt. Gerne
Hier der überarbeitete Code:
/****************************************************
** changer.c - fügt Benutzer in Gruppedatei ein **
** Argument 1 ist der Benutzer name **
** Argumetn 2 ist der Gruppenname **
****************************************************/
#include <stdio.h>
#include <ctype.h>
int main(int argc, char **argv)
{
char komplett[5000] = "";
char dummy[200] = "";
char line[200] = "";
char *vorhanden = "";
int err = 0;
int x = 0;
FILE *stream = 0;
if (argc != 3) {
printf("Usage: %s Benutzername Gruppenamme\n", argv[0]);
exit(2);
}
/* Gruppen Datei einlesen */
if ( (stream = fopen ("/etc/group", "r+")) == NULL) {
printf("Can't open file\n");
exit(1);
}
else {
/* Gesamte Datei durchgegehn */
while (fgets(line, 200 , stream)) { /*Wenn noch dateien vorhanden sind */
if( strstr(line, "beginner")) {
if (! strstr(line, argv[1])) {
for (x = 0; x < 200; x++) {
if (iscntrl(line[x])) {
strncpy(dummy, line, x );
strcat(dummy, ",");
strncpy(dummy, line, x );
strcat(dummy, ",");
strcat(dummy, argv[1]);
strcat(dummy, "\n");
strcpy(line,dummy);
break;
}
}
}
}
strcat(komplett, &line);
}
fseek(stream, 0, 0);
err = fprintf(stream, "%s", komplett);
}
fclose(stream);
exit(0);
}