--- gnuser-1.2.0.c 2009-11-05 21:53:41.000000000 +0100 +++ gnuser-1.2.1.c 2009-11-05 21:54:43.000000000 +0100 @@ -1,7 +1,7 @@ /* * Project: gnuser (Gnu User Manager) * File: gnuser.c - * Version: 1.2.0 + * Version: 1.2.1 * Copyright (c) 2009-2010 * Author: Jonathan Salwan * Mail: jonathan.salwan [!] gnuser.org @@ -119,7 +119,7 @@ static void version(void) { fprintf(stdout, - "gnuser (Gnu User Manager) - v1.2.0\n" + "gnuser (Gnu User Manager) - v1.2.1\n" "GPL Licence\n"); exit(0); @@ -205,6 +205,26 @@ return 0; } +int verif_uid(int idlogin) +{ + + FILE *fileread; + + fileread = fopen(patch_passwd, "r"); + struct passwd *pswd_struct; /* Structur passwd file entry */ + + while ((pswd_struct = fgetpwent(fileread)) != NULL) + { + if (pswd_struct->pw_uid == idlogin){ break; } + } + + /* test if uid exist */ + if (pswd_struct == NULL) + {return 0;} + else + {return 1;} +} + int main(int argc, char *argv[]) { @@ -229,6 +249,12 @@ if(argc < 5) option_add(); + /* Verification if uid exist in /etc/passwd */ + if(verif_uid(atoi(argv[3])) == 1){ + fprintf(stderr,"Error: Uid exist, please change uid.\n"); + exit(1); + } + FILE *fichier; /* write in /etc/passwd */