0

Fix memory leak in corrupt JPEG decoding.

BUG=10945
Review URL: http://codereview.chromium.org/113433

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16352 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
thestig@chromium.org
2009-05-19 01:04:21 +00:00
parent 5ed4ba5f65
commit a191a504ea
2 changed files with 2 additions and 13 deletions
base/gfx
tools/valgrind

@ -184,6 +184,7 @@ bool JPEGCodec::Encode(const unsigned char* input, ColorFormat format,
int quality, std::vector<unsigned char>* output) {
jpeg_compress_struct cinfo;
CompressDestroyer destroyer;
destroyer.SetManagedObject(&cinfo);
output->clear();
// We set up the normal JPEG error routines, then override error_exit.
@ -204,7 +205,6 @@ bool JPEGCodec::Encode(const unsigned char* input, ColorFormat format,
// The destroyer will destroy() cinfo on exit.
jpeg_create_compress(&cinfo);
destroyer.SetManagedObject(&cinfo);
cinfo.image_width = w;
cinfo.image_height = h;
@ -395,6 +395,7 @@ bool JPEGCodec::Decode(const unsigned char* input, size_t input_size,
int* w, int* h) {
jpeg_decompress_struct cinfo;
DecompressDestroyer destroyer;
destroyer.SetManagedObject(&cinfo);
output->clear();
// We set up the normal JPEG error routines, then override error_exit.
@ -414,7 +415,6 @@ bool JPEGCodec::Decode(const unsigned char* input, size_t input_size,
// The destroyer will destroy() cinfo on exit. We don't want to set the
// destroyer's object until cinfo is initialized.
jpeg_create_decompress(&cinfo);
destroyer.SetManagedObject(&cinfo);
// set up the source manager
jpeg_source_mgr srcmgr;

@ -491,17 +491,6 @@
fun:_ZN17URLRequestHttpJob21NotifyHeadersCompleteEv
fun:_ZN17URLRequestHttpJob16OnStartCompletedEi
}
{
# See http://crbug.com/10945
bug_10945
Memcheck:Leak
fun:malloc
fun:jpeg_get_small
fun:jinit_memory_mgr
fun:jpeg_CreateDecompress
fun:_ZN9JPEGCodec6DecodeEPKhjNS_11ColorFormatEPSt6vectorIhSaIhEEPiS7_
fun:_ZN30JPEGCodec_DecodeCorrupted_Test8TestBodyEv
}
{
# See http://crbug.com/11116
bug_11116a