projects
/
ossec-hids.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
novi upstream verzije 2.8.3
[ossec-hids.git]
/
src
/
os_net
/
os_net.c
diff --git
a/src/os_net/os_net.c
b/src/os_net/os_net.c
index
c282b9f
..
08e1352
100755
(executable)
--- a/
src/os_net/os_net.c
+++ b/
src/os_net/os_net.c
@@
-19,7
+19,7
@@
-
+#include <errno.h>
#include "shared.h"
#include "os_net.h"
#include "shared.h"
#include "os_net.h"
@@
-37,8
+37,12
@@
socklen_t us_l = sizeof(n_us);
+ strlen ((ptr)->sun_path))
#endif /* Sun_LEN */
+ strlen ((ptr)->sun_path))
#endif /* Sun_LEN */
-#else
-int ENOBUFS = 0;
+#else /* WIN32 */
+/*int ENOBUFS = 0;*/
+# ifndef ENOBUFS
+# define ENOBUFS 0
+# endif
+
#endif /* WIN32*/
#endif /* WIN32*/
@@
-76,6
+80,7
@@
int OS_Bindport(unsigned int _port, unsigned int _proto, char *_ip, int ipv6)
if(setsockopt(ossock, SOL_SOCKET, SO_REUSEADDR,
(char *)&flag, sizeof(flag)) < 0)
{
if(setsockopt(ossock, SOL_SOCKET, SO_REUSEADDR,
(char *)&flag, sizeof(flag)) < 0)
{
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
}
}
return(OS_SOCKTERR);
}
}
@@
-95,6
+100,7
@@
int OS_Bindport(unsigned int _port, unsigned int _proto, char *_ip, int ipv6)
if(bind(ossock, (struct sockaddr *) &server6, sizeof(server6)) < 0)
{
if(bind(ossock, (struct sockaddr *) &server6, sizeof(server6)) < 0)
{
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
}
#endif
return(OS_SOCKTERR);
}
#endif
@@
-114,6
+120,7
@@
int OS_Bindport(unsigned int _port, unsigned int _proto, char *_ip, int ipv6)
if(bind(ossock, (struct sockaddr *) &server, sizeof(server)) < 0)
{
if(bind(ossock, (struct sockaddr *) &server, sizeof(server)) < 0)
{
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
}
}
return(OS_SOCKTERR);
}
}
@@
-124,6
+131,7
@@
int OS_Bindport(unsigned int _port, unsigned int _proto, char *_ip, int ipv6)
{
if(listen(ossock, 32) < 0)
{
{
if(listen(ossock, 32) < 0)
{
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
}
}
return(OS_SOCKTERR);
}
}
@@
-167,29
+175,40
@@
int OS_BindUnixDomain(char * path, int mode, int max_msg_size)
n_us.sun_family = AF_UNIX;
strncpy(n_us.sun_path, path, sizeof(n_us.sun_path)-1);
n_us.sun_family = AF_UNIX;
strncpy(n_us.sun_path, path, sizeof(n_us.sun_path)-1);
- if((ossock = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
+ if((ossock = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0)
return(OS_SOCKTERR);
if(bind(ossock, (struct sockaddr *)&n_us, SUN_LEN(&n_us)) < 0)
{
return(OS_SOCKTERR);
if(bind(ossock, (struct sockaddr *)&n_us, SUN_LEN(&n_us)) < 0)
{
- close(ossock);
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
}
/* Changing permissions */
return(OS_SOCKTERR);
}
/* Changing permissions */
- chmod(path,mode);
+ if(chmod(path,mode) < 0)
+ {
+ OS_CloseSocket(ossock);
+ return(OS_SOCKTERR);
+ }
/* Getting current maximum size */
if(getsockopt(ossock, SOL_SOCKET, SO_RCVBUF, &len, &optlen) == -1)
/* Getting current maximum size */
if(getsockopt(ossock, SOL_SOCKET, SO_RCVBUF, &len, &optlen) == -1)
+ {
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
return(OS_SOCKTERR);
+ }
/* Setting socket opt */
if(len < max_msg_size)
{
len = max_msg_size;
/* Setting socket opt */
if(len < max_msg_size)
{
len = max_msg_size;
- setsockopt(ossock, SOL_SOCKET, SO_RCVBUF, &len, optlen);
+ if(setsockopt(ossock, SOL_SOCKET, SO_RCVBUF, &len, optlen) < 0)
+ {
+ OS_CloseSocket(ossock);
+ return(OS_SOCKTERR);
+ }
}
return(ossock);
}
return(ossock);
@@
-211,9
+230,9
@@
int OS_ConnectUnixDomain(char * path, int max_msg_size)
n_us.sun_family = AF_UNIX;
/* Setting up path */
n_us.sun_family = AF_UNIX;
/* Setting up path */
- strncpy(n_us.sun_path,path,sizeof(n_us.sun_path)-1);
+ strncpy(n_us.sun_path,path,sizeof(n_us.sun_path)-1);
- if((ossock = socket(AF_UNIX, SOCK_DGRAM,0)) < 0)
+ if((ossock = socket(PF_UNIX, SOCK_DGRAM,0)) < 0)
return(OS_SOCKTERR);
return(OS_SOCKTERR);
@@
-221,23
+240,33
@@
int OS_ConnectUnixDomain(char * path, int max_msg_size)
* We can use "send" after that
*/
if(connect(ossock,(struct sockaddr *)&n_us,SUN_LEN(&n_us)) < 0)
* We can use "send" after that
*/
if(connect(ossock,(struct sockaddr *)&n_us,SUN_LEN(&n_us)) < 0)
+ {
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
return(OS_SOCKTERR);
+ }
/* Getting current maximum size */
if(getsockopt(ossock, SOL_SOCKET, SO_SNDBUF, &len, &optlen) == -1)
/* Getting current maximum size */
if(getsockopt(ossock, SOL_SOCKET, SO_SNDBUF, &len, &optlen) == -1)
+ {
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
return(OS_SOCKTERR);
+ }
/* Setting maximum message size */
if(len < max_msg_size)
{
len = max_msg_size;
/* Setting maximum message size */
if(len < max_msg_size)
{
len = max_msg_size;
- setsockopt(ossock, SOL_SOCKET, SO_SNDBUF, &len, optlen);
+ if(setsockopt(ossock, SOL_SOCKET, SO_SNDBUF, &len, optlen) < 0)
+ {
+ OS_CloseSocket(ossock);
+ return(OS_SOCKTERR);
+ }
}
}
- /* Returning the socket */
+ /* Returning the socket */
return(ossock);
}
return(ossock);
}
@@
-296,7
+325,10
@@
int OS_Connect(unsigned int _port, unsigned int protocol, char *_ip, int ipv6)
if((_ip == NULL)||(_ip[0] == '\0'))
if((_ip == NULL)||(_ip[0] == '\0'))
+ {
+ OS_CloseSocket(ossock);
return(OS_INVALID);
return(OS_INVALID);
+ }
if(ipv6 == 1)
if(ipv6 == 1)
@@
-308,7
+340,10
@@
int OS_Connect(unsigned int _port, unsigned int protocol, char *_ip, int ipv6)
inet_pton(AF_INET6, _ip, &server6.sin6_addr.s6_addr);
if(connect(ossock,(struct sockaddr *)&server6, sizeof(server6)) < 0)
inet_pton(AF_INET6, _ip, &server6.sin6_addr.s6_addr);
if(connect(ossock,(struct sockaddr *)&server6, sizeof(server6)) < 0)
+ {
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
return(OS_SOCKTERR);
+ }
#endif
}
else
#endif
}
else
@@
-320,7
+355,10
@@
int OS_Connect(unsigned int _port, unsigned int protocol, char *_ip, int ipv6)
if(connect(ossock,(struct sockaddr *)&server, sizeof(server)) < 0)
if(connect(ossock,(struct sockaddr *)&server, sizeof(server)) < 0)
+ {
+ OS_CloseSocket(ossock);
return(OS_SOCKTERR);
return(OS_SOCKTERR);
+ }
}
}
@@
-407,7
+445,7
@@
int OS_AcceptTCP(int socket, char *srcip, int addrsize)
if((clientsocket = accept(socket, (struct sockaddr *) &_nc,
&_ncl)) < 0)
if((clientsocket = accept(socket, (struct sockaddr *) &_nc,
&_ncl)) < 0)
- return(-1);
+ return(-1);
strncpy(srcip, inet_ntoa(_nc.sin_addr),addrsize -1);
srcip[addrsize -1]='\0';
strncpy(srcip, inet_ntoa(_nc.sin_addr),addrsize -1);
srcip[addrsize -1]='\0';
@@
-423,14
+461,15
@@
char *OS_RecvTCP(int socket, int sizet)
{
char *ret;
{
char *ret;
- int retsize=0;
-
ret = (char *) calloc((sizet), sizeof(char));
if(ret == NULL)
return(NULL);
ret = (char *) calloc((sizet), sizeof(char));
if(ret == NULL)
return(NULL);
- if((retsize = recv(socket, ret, sizet-1,0)) <= 0)
+ if(recv(socket, ret, sizet-1,0) <= 0)
+ {
+ free(ret);
return(NULL);
return(NULL);
+ }
return(ret);
}
return(ret);
}
@@
-441,17
+480,12
@@
char *OS_RecvTCP(int socket, int sizet)
*/
int OS_RecvTCPBuffer(int socket, char *buffer, int sizet)
{
*/
int OS_RecvTCPBuffer(int socket, char *buffer, int sizet)
{
- int retsize = 0;
+ int retsize;
- while(!retsize)
+ if((retsize = recv(socket, buffer, sizet -1, 0)) > 0)
{
{
- retsize = recv(socket, buffer, sizet -1, 0);
- if(retsize > 0)
- {
- buffer[retsize] = '\0';
- return(0);
- }
- return(-1);
+ buffer[retsize] = '\0';
+ return(0);
}
return(-1);
}
}
return(-1);
}
@@
-471,7
+505,10
@@
char *OS_RecvUDP(int socket, int sizet)
return(NULL);
if((recv(socket,ret,sizet-1,0))<0)
return(NULL);
if((recv(socket,ret,sizet-1,0))<0)
+ {
+ free(ret);
return(NULL);
return(NULL);
+ }
return(ret);
}
return(ret);
}
@@
-564,4
+601,13
@@
char *OS_GetHost(char *host, int attempts)
return(NULL);
}
return(NULL);
}
+int OS_CloseSocket(int socket)
+{
+ #ifdef WIN32
+ return (closesocket(socket));
+ #else
+ return (close(socket));
+ #endif /* WIN32 */
+}
+
/* EOF */
/* EOF */