mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
gpg: Fix minor memory leak in the compress filter.
* g10/compress.c (push_compress_filter2): Return an error if no filter was pushed. (push_compress_filter): Ditto. (handle_compressed): Free CFX if no filter was pushed. * g10/import.c (read_block): Ditto. -- GnuPG-bug-id: 3898, 3930 Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
f7f3043653
commit
d26363e4f1
3 changed files with 21 additions and 9 deletions
|
@ -319,7 +319,8 @@ handle_compressed (ctrl_t ctrl, void *procctx, PKT_compressed *cd,
|
|||
cfx = xmalloc_clear (sizeof *cfx);
|
||||
cfx->release = release_context;
|
||||
cfx->algo = cd->algorithm;
|
||||
push_compress_filter(cd->buf,cfx,cd->algorithm);
|
||||
if (push_compress_filter(cd->buf, cfx, cd->algorithm))
|
||||
xfree (cfx);
|
||||
}
|
||||
if( callback )
|
||||
rc = callback(cd->buf, passthru );
|
||||
|
@ -329,16 +330,20 @@ handle_compressed (ctrl_t ctrl, void *procctx, PKT_compressed *cd,
|
|||
return rc;
|
||||
}
|
||||
|
||||
void
|
||||
gpg_error_t
|
||||
push_compress_filter(IOBUF out,compress_filter_context_t *zfx,int algo)
|
||||
{
|
||||
push_compress_filter2(out,zfx,algo,0);
|
||||
return push_compress_filter2(out,zfx,algo,0);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
/* Push a compress filter and return 0 if that succeeded. */
|
||||
gpg_error_t
|
||||
push_compress_filter2(IOBUF out,compress_filter_context_t *zfx,
|
||||
int algo,int rel)
|
||||
{
|
||||
gpg_error_t err = gpg_error (GPG_ERR_FALSE);
|
||||
|
||||
if(algo>=0)
|
||||
zfx->algo=algo;
|
||||
else
|
||||
|
@ -353,16 +358,20 @@ push_compress_filter2(IOBUF out,compress_filter_context_t *zfx,
|
|||
case COMPRESS_ALGO_ZIP:
|
||||
case COMPRESS_ALGO_ZLIB:
|
||||
iobuf_push_filter2(out,compress_filter,zfx,rel);
|
||||
err = 0;
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_BZIP2
|
||||
case COMPRESS_ALGO_BZIP2:
|
||||
iobuf_push_filter2(out,compress_filter_bz2,zfx,rel);
|
||||
err = 0;
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue