From 5ce7dacfa253b94e098b33c97b2b3eca8397edcc Mon Sep 17 00:00:00 2001 From: cristy Date: Wed, 28 May 2014 12:22:17 +0000 Subject: [PATCH] --- MagickCore/string.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/MagickCore/string.c b/MagickCore/string.c index 1c9eb8526..c5479f1e2 100644 --- a/MagickCore/string.c +++ b/MagickCore/string.c @@ -213,13 +213,15 @@ MagickExport StringInfo *BlobToStringInfo(const void *blob,const size_t length) *string_info; string_info=AcquireStringInfo(0); - if (string_info->datum != (unsigned char *) NULL) - string_info->datum=(unsigned char *) RelinquishMagickMemory( - string_info->datum); + if (~length < MaxTextExtent) + ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); string_info->length=length; - if (~string_info->length >= (MaxTextExtent-1)) - string_info->datum=(unsigned char *) AcquireQuantumMemory( - string_info->length+MaxTextExtent,sizeof(*string_info->datum)); + if (string_info->datum == (unsigned char *) NULL) + string_info->datum=(unsigned char *) AcquireQuantumMemory(length+ + MaxTextExtent,sizeof(*string_info->datum)); + else + string_info->datum=(unsigned char *) ResizeQuantumMemory(string_info->datum, + length+MaxTextExtent,sizeof(*string_info->datum)); if (string_info->datum == (unsigned char *) NULL) { string_info=DestroyStringInfo(string_info); @@ -650,11 +652,11 @@ MagickExport StringInfo *ConfigureFileToStringInfo(const char *filename) string[length]='\0'; file=close(file)-1; string_info=AcquireStringInfo(0); + (void) CopyMagickString(string_info->path,filename,MaxTextExtent); + string_info->length=length; if (string_info->datum != (unsigned char *) NULL) string_info->datum=(unsigned char *) RelinquishMagickMemory( string_info->datum); - (void) CopyMagickString(string_info->path,filename,MaxTextExtent); - string_info->length=length; string_info->datum=(unsigned char *) string; return(string_info); } @@ -1032,10 +1034,10 @@ MagickExport StringInfo *FileToStringInfo(const char *filename, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",filename); assert(exception != (ExceptionInfo *) NULL); string_info=AcquireStringInfo(0); + (void) CopyMagickString(string_info->path,filename,MaxTextExtent); if (string_info->datum != (unsigned char *) NULL) string_info->datum=(unsigned char *) RelinquishMagickMemory( string_info->datum); - (void) CopyMagickString(string_info->path,filename,MaxTextExtent); string_info->datum=FileToBlob(filename,extent,&string_info->length,exception); if (string_info->datum == (unsigned char *) NULL) { -- 2.40.0