X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilc%2Fclientutil.c;fp=apps%2Fsilc%2Fclientutil.c;h=6834916a62bcbde683a1cc52c00c0000fd64674f;hp=22e84bdce37a2bee566488aff87d29d1962a2725;hb=2f8b86e0ca6551ed22ca1de45558b0bf93ab3470;hpb=c49f7330c61ba13940fadef90377ec4012145e37 diff --git a/apps/silc/clientutil.c b/apps/silc/clientutil.c index 22e84bdc..6834916a 100644 --- a/apps/silc/clientutil.c +++ b/apps/silc/clientutil.c @@ -506,7 +506,7 @@ New pair of keys will be created. Please, answer to following questions.\n\ int silc_client_check_silc_dir() { char filename[256], file_public_key[256], file_private_key[256]; - char servfilename[256]; + char servfilename[256], clientfilename[256]; char *identifier; struct stat st; struct passwd *pw; @@ -531,6 +531,8 @@ int silc_client_check_silc_dir() snprintf(filename, sizeof(filename) - 1, "%s/.silc/", pw->pw_dir); snprintf(servfilename, sizeof(servfilename) - 1, "%s/.silc/serverkeys", pw->pw_dir); + snprintf(clientfilename, sizeof(clientfilename) - 1, "%s/.silc/clientkeys", + pw->pw_dir); /* * Check ~/.silc directory @@ -596,6 +598,28 @@ int silc_client_check_silc_dir() } } + /* + * Check ~./silc/clientkeys directory + */ + if ((stat(clientfilename, &st)) == -1) { + /* If dir doesn't exist */ + if (errno == ENOENT) { + if (pw->pw_uid == geteuid()) { + if ((mkdir(clientfilename, 0755)) == -1) { + fprintf(stderr, "Couldn't create `%s' directory\n", clientfilename); + return FALSE; + } + } else { + fprintf(stderr, "Couldn't create `%s' directory due to a wrong uid!\n", + clientfilename); + return FALSE; + } + } else { + fprintf(stderr, "%s\n", strerror(errno)); + return FALSE; + } + } + /* * Check Public and Private keys */