src/dvbpsi.c: Use va_end() on error path of message functions.
[email protected] (Jean-Paul Saman) Wed, 16 Apr 2014 15:53:38 +0200 (CEST)
| Newsgroups | gmane.comp.video.videolan.libdvbpsi.devel |
|---|---|
| Message-ID | <[email protected]> |
libdvbpsi | branch: master | Jean-Paul Saman <[email protected]> | Wed Apr 16 11:17:59 2014 +0200| [afca8c8e3735dec999903ed721f1523633458896] | committer: Jean-Paul Saman src/dvbpsi.c: Use va_end() on error path of message functions. > http://git.videolan.org/gitweb.cgi/libdvbpsi.git/?a=commit;h=afca8c8e3735dec999903ed721f1523633458896 --- src/dvbpsi.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/dvbpsi.c b/src/dvbpsi.c index d441ee4..89d4932 100644 --- a/src/dvbpsi.c +++ b/src/dvbpsi.c @@ -527,9 +527,12 @@ void dvbpsi_message(dvbpsi_t *dvbpsi, const dvbpsi_msg_level_t level, const char int err = vasprintf(&msg, fmt, ap); #else msg = malloc(DVBPSI_MSG_SIZE); - if (msg == NULL) + if (msg == NULL) { + va_end(ap); return; + } if (snprintf(&msg, DVBPSI_MSG_SIZE, DVBPSI_MSG_FORMAT, ap) < 0) { + va_end(ap); free(msg); return; } @@ -553,10 +556,13 @@ void dvbpsi_message(dvbpsi_t *dvbpsi, const dvbpsi_msg_level_t level, const char va_start(ap, fmt); \ char *tmp = NULL; \ int err = vasprintf(&tmp, fmt, ap); \ - if (err < 0) \ + if (err < 0) { \ + va_end(ap); \ return; \ + } \ char *msg = NULL; \ if (asprintf(&msg, DVBPSI_MSG_FORMAT, src, tmp) < 0) { \ + va_end(ap); \ free(tmp); \ return; \ } \ @@ -574,10 +580,14 @@ void dvbpsi_message(dvbpsi_t *dvbpsi, const dvbpsi_msg_level_t level, const char va_list ap; \ va_start(ap, fmt); \ char *msg = malloc(DVBPSI_MSG_SIZE); \ - if (msg == NULL) \ + if (msg == NULL) { \ + va_end(ap); \ return; \ - if (snprintf(&msg, DVBPSI_MSG_SIZE, DVBPSI_MSG_FORMAT, src) < 0) \ + } \ + if (snprintf(&msg, DVBPSI_MSG_SIZE, DVBPSI_MSG_FORMAT, src) < 0) { \ + va_end(ap); \ return; \ + } \ int err = vsnprintf(&msg, DVBPSI_MSG_SIZE, fmt, ap); \ va_end(ap); \ if (err > 0) { \ _______________________________________________ libdvbpsi-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libdvbpsi-devel