Fix some fd leaks in _xcb_open_*()
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
d6d44e1bf0
commit
f3f8738436
|
@ -192,8 +192,10 @@ static int _xcb_open_decnet(const char *host, const char *protocol, const unsign
|
||||||
accessdata.acc_accl = strlen((char *)accessdata.acc_acc);
|
accessdata.acc_accl = strlen((char *)accessdata.acc_acc);
|
||||||
setsockopt(fd, DNPROTO_NSP, SO_CONACCESS, &accessdata, sizeof(accessdata));
|
setsockopt(fd, DNPROTO_NSP, SO_CONACCESS, &accessdata, sizeof(accessdata));
|
||||||
|
|
||||||
if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1)
|
if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
|
||||||
|
close(fd);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -238,9 +240,12 @@ static int _xcb_open_tcp(char *host, char *protocol, const unsigned short port)
|
||||||
for(addr = results; addr; addr = addr->ai_next)
|
for(addr = results; addr; addr = addr->ai_next)
|
||||||
{
|
{
|
||||||
fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
|
fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
|
||||||
if(fd >= 0 && connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
|
if(fd >= 0) {
|
||||||
break;
|
if (connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
|
||||||
fd = -1;
|
break;
|
||||||
|
close(fd);
|
||||||
|
fd = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
freeaddrinfo(results);
|
freeaddrinfo(results);
|
||||||
return fd;
|
return fd;
|
||||||
|
@ -262,8 +267,10 @@ static int _xcb_open_unix(char *protocol, const char *file)
|
||||||
fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
if(fd == -1)
|
if(fd == -1)
|
||||||
return -1;
|
return -1;
|
||||||
if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1)
|
if(connect(fd, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
|
||||||
|
close(fd);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue