gnutls: Fix a memory leak.

This commit is contained in:
Giuseppe Scrivano 2012-04-01 16:30:59 +02:00
parent 3bb17fca04
commit b30ba732ad
2 changed files with 10 additions and 13 deletions

View File

@ -1,5 +1,7 @@
2012-04-01 Giuseppe Scrivano <gscrivano@gnu.org>
* gnutls.c (wgnutls_read_timeout): Ensure timer is freed.
* gnutls.c (wgnutls_read_timeout): Do not use timer if it is not
allocated.
Reported by: Xu Zhongxing <xu_zhong_xing@163.com>

View File

@ -175,15 +175,13 @@ wgnutls_read_timeout (int fd, char *buf, int bufsize, void *arg, double timeout)
if (timeout)
{
#ifdef F_GETFL
ret = fcntl (fd, F_SETFL, flags | O_NONBLOCK);
if (ret < 0)
return ret;
if (fcntl (fd, F_SETFL, flags | O_NONBLOCK))
break;
#else
/* XXX: Assume it was blocking before. */
const int one = 1;
ret = ioctl (fd, FIONBIO, &one);
if (ret < 0)
return ret;
if (ioctl (fd, FIONBIO, &one) < 0)
break;
#endif
}
@ -191,16 +189,13 @@ wgnutls_read_timeout (int fd, char *buf, int bufsize, void *arg, double timeout)
if (timeout)
{
int status;
#ifdef F_GETFL
status = fcntl (fd, F_SETFL, flags);
if (status < 0)
return status;
if (fcntl (fd, F_SETFL, flags) < 0)
break;
#else
const int zero = 0;
status = ioctl (fd, FIONBIO, &zero);
if (status < 0)
return status;
if (ioctl (fd, FIONBIO, &zero) < 0)
break;
#endif
}
}