diff options
author | Remi Collet <remi@php.net> | 2014-03-04 13:41:37 +0100 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2014-03-04 11:53:45 -0800 |
commit | fc8f0c34f73ab6d399a1365e35af7f2d3457223c (patch) | |
tree | 613acf1076fbb0fc3ab46d9e0b650714bdf6bb73 | |
parent | 43d220603c4cec99aae9394fb7bd05bed28757a6 (diff) | |
download | php-git-fc8f0c34f73ab6d399a1365e35af7f2d3457223c.tar.gz |
Improves fix for memory leak, keep in sync with upstream.
Previous fix:
http://git.php.net/?p=php-src.git;a=commitdiff;h=10eb0070700382f966bf260e44135e1f724a15d2
Upstream fix:
https://github.com/glensc/file/commit/c0c0032b9e9eb57b91fefef905a3b018bab492d9
-rw-r--r-- | ext/fileinfo/libmagic/softmagic.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ext/fileinfo/libmagic/softmagic.c b/ext/fileinfo/libmagic/softmagic.c index 33970e5921..82a470ac57 100644 --- a/ext/fileinfo/libmagic/softmagic.c +++ b/ext/fileinfo/libmagic/softmagic.c @@ -1696,11 +1696,19 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m, ms->o.buf = sbuf; ms->offset = soffset; if (rv == 1) { - if ((ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0 && - file_printf(ms, m->desc, offset) == -1) - return -1; - if (file_printf(ms, "%s", rbuf) == -1) + if ((ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0 && + file_printf(ms, m->desc, offset) == -1) { + if (rbuf) { + efree(rbuf); + } + return -1; + } + if (file_printf(ms, "%s", rbuf) == -1) { + if (rbuf) { + efree(rbuf); + } return -1; + } } if (rbuf) { efree(rbuf); |