diff --git a/UDPTCPNetwork.h b/UDPTCPNetwork.h index a5adfa0..89c8677 100644 --- a/UDPTCPNetwork.h +++ b/UDPTCPNetwork.h @@ -61,13 +61,16 @@ using namespace std; * global functions needed for networking * */ +extern int UDPTCPNetwork_init; + int dns_filladdr (string host, string port, int ai_family, struct sockaddr_storage *sAddr); char *itoa(char* buffer, int number, int size); void UDPTCPNetwork_Startup(); -extern int UDPTCPNetwork_init; #define UDPTCPNetwork() if(UDPTCPNetwork_init == 0) UDPTCPNetwork_Startup() +int file_is_readable (const char *fname); + /************************************************************************ * * udp related functions diff --git a/network.cc b/network.cc index 8a430df..6c26230 100644 --- a/network.cc +++ b/network.cc @@ -1,7 +1,11 @@ +/* + * + */ #include "UDPTCPNetwork.h" #include +#include #include /* close() */ #include /* memset() */ @@ -39,7 +43,7 @@ int dns_filladdr (string host, string port, int ai_family, struct sockaddr_stora char* itoa(char* buffer, int number, int size) { snprintf (buffer, size, "%d", number); return buffer; -} +}; void UDPTCPNetwork_Startup() { @@ -65,4 +69,16 @@ void UDPTCPNetwork_Startup() { } #endif UDPTCPNetwork_init = 1; -} +}; + + + +int file_is_readable (const char *fname) { + int f; + + if ((f = open(fname, O_RDONLY)) == -1) return 0; + close (f); + + return 1; +}; + diff --git a/ssl.cc b/ssl.cc index cdf77bc..05bb78e 100644 --- a/ssl.cc +++ b/ssl.cc @@ -101,8 +101,8 @@ int SSLSocket::SetCertificat(string certf, string keyf) { certfile = certf; keyfile = keyf; - if (access (certf.c_str(), R_OK) != 0) return 0; - if (access (keyf.c_str(), R_OK) != 0) return 0; + if (!file_is_readable(certf.c_str())) return 0; + if (!file_is_readable(keyf.c_str())) return 0; return 1; }; diff --git a/test-ssl.cc b/test-ssl.cc index d0a6b85..bf4c82f 100644 --- a/test-ssl.cc +++ b/test-ssl.cc @@ -30,7 +30,7 @@ void server () { // // init SSL printf ("server: setting up certificates\n"); - if (ssl.SetCertificat("cert.pem", "privkey.pem") != 0) { + if (ssl.SetCertificat("cert.pem", "privkey.pem") != 1) { printf ("server: SetCertificat error:%s\n", strerror(errno)); exit (1); }