diff -Naur inetutils-1.9.2-orig/talkd/acl.c inetutils-1.9.2/talkd/acl.c --- inetutils-1.9.2-orig/talkd/acl.c 2013-09-26 12:36:38.000000000 +0300 +++ inetutils-1.9.2/talkd/acl.c 2014-12-12 11:55:13.867200000 +0300 @@ -332,6 +332,28 @@ level = -1; /* Enforce a deny rule. */ } + /* existence check */ + if (access (filename, F_OK) != 0) + { + switch (errno) + { + case ENOENT: + /* no error message if user doesn't have a .talkrc file */ + break; + default: + syslog (LOG_ERR, "con't open config file %s: %m", filename); + break; + } + return NULL; + } + + /* read check */ + if (access (filename, R_OK) != 0) + { + syslog (LOG_ERR, "con't open config file %s: %m", filename); + return NULL; + } + mark = acl_tail; read_acl (filename, level); free (filename); diff -Naur inetutils-1.9.2-orig/talkd/announce.c inetutils-1.9.2/talkd/announce.c --- inetutils-1.9.2-orig/talkd/announce.c 2013-09-26 12:36:38.000000000 +0300 +++ inetutils-1.9.2/talkd/announce.c 2014-12-12 11:55:13.867200000 +0300 @@ -88,7 +88,7 @@ } static int -print_mesg (char *tty, CTL_MSG * request, char *remote_machine) +print_mesg (char *tty, CTL_MSG * request, const char *remote_machine) { time_t t; LINE ln; @@ -125,7 +125,7 @@ /* See if the user is accepting messages. If so, announce that a talk is requested. */ int -announce (CTL_MSG * request, char *remote_machine) +announce (CTL_MSG * request, const char *remote_machine) { char *ttypath; int len; diff -Naur inetutils-1.9.2-orig/talkd/intalkd.h inetutils-1.9.2/talkd/intalkd.h --- inetutils-1.9.2-orig/talkd/intalkd.h 2013-09-26 12:36:38.000000000 +0300 +++ inetutils-1.9.2/talkd/intalkd.h 2014-12-12 11:55:13.867200000 +0300 @@ -22,6 +22,13 @@ #include #include #include +#ifdef HAVE_OSOCKADDR_H +# include +#else +# ifndef HAVE_STRUCT_OSOCKADDR +# include +# endif +#endif #include #include #include @@ -65,4 +72,4 @@ extern int new_id (void); extern void read_acl (char *config_file, int system); extern int acl_match (CTL_MSG * msg, struct sockaddr_in *sa_in); -extern int announce (CTL_MSG * request, char *remote_machine); +extern int announce (CTL_MSG * request, const char *remote_machine); diff -Naur inetutils-1.9.2-orig/talkd/process.c inetutils-1.9.2/talkd/process.c --- inetutils-1.9.2-orig/talkd/process.c 2013-10-29 13:38:56.000000000 +0300 +++ inetutils-1.9.2/talkd/process.c 2014-12-12 11:55:13.867200000 +0300 @@ -236,12 +236,14 @@ if (stat (ftty, &statb) == 0) { +#ifndef __CYGWIN__ if (!(statb.st_mode & S_IWGRP)) { if (status != SUCCESS) status = PERMISSION_DENIED; continue; } +#endif if (statb.st_atime > last_time) { last_time = statb.st_atime;