From b30ba732ade43b231f4fe6693f1f833b36f7ffe2 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Sun, 1 Apr 2012 16:30:59 +0200 Subject: [PATCH] gnutls: Fix a memory leak. --- src/ChangeLog | 2 ++ src/gnutls.c | 21 ++++++++------------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d58b1520..2152cce3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2012-04-01 Giuseppe Scrivano + * 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 diff --git a/src/gnutls.c b/src/gnutls.c index 2db5a90c..442b1364 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -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 } } -- 2.39.2