diff --git a/MagickCore/color-private.h b/MagickCore/color-private.h index 79d997eec46..32b8f79619d 100644 --- a/MagickCore/color-private.h +++ b/MagickCore/color-private.h @@ -43,6 +43,8 @@ static inline MagickBooleanType GetColorRange(const char *color, MagickBooleanType status; + if (color == (const char *) NULL) + return(MagickFalse); if (*color != '\0') { char diff --git a/MagickCore/string-private.h b/MagickCore/string-private.h index 6314bf7b6a6..465f3e1016f 100644 --- a/MagickCore/string-private.h +++ b/MagickCore/string-private.h @@ -102,11 +102,15 @@ static inline double StringToDoubleInterval(const char *string, static inline int StringToInteger(const char *magick_restrict value) { + if (value == (const char *) NULL) + return(0); return((int) strtol(value,(char **) NULL,10)); } static inline long StringToLong(const char *magick_restrict value) { + if (value == (const char *) NULL) + return(0); return(strtol(value,(char **) NULL,10)); } @@ -136,6 +140,8 @@ static inline size_t StringToSizeType(const char *string,const double interval) static inline unsigned long StringToUnsignedLong( const char *magick_restrict value) { + if (value == (const char *) NULL) + return(0); return(strtoul(value,(char **) NULL,10)); } diff --git a/MagickCore/utility-private.h b/MagickCore/utility-private.h index f2604f0690e..f12b5fae771 100644 --- a/MagickCore/utility-private.h +++ b/MagickCore/utility-private.h @@ -133,6 +133,8 @@ static inline wchar_t *create_wchar_mode(const char *mode) static inline int access_utf8(const char *path,int mode) { + if (path == (const char *) NULL) + return(-1); #if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) return(access(path,mode)); #else diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index ab4f253e51c..8eca83a32fb 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -4066,6 +4066,8 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info, AppendImageFormat(format,images->filename); AppendImageStack(images); FinalizeImageSettings(image_info,image,MagickFalse); + if (image == (Image *) NULL) + continue; if (global_colormap != MagickFalse) { QuantizeInfo diff --git a/MagickWand/operation.c b/MagickWand/operation.c index f934f8a44ff..ff246bc84bf 100644 --- a/MagickWand/operation.c +++ b/MagickWand/operation.c @@ -1085,6 +1085,8 @@ WandPrivate void CLISettingOptionInfo(MagickCLI *cli_wand, if (LocaleCompare("log",option+1) == 0) { if (IfSetOption) { + if (arg1 == (char *) NULL) + break; if ((strchr(arg1,'%') == (char *) NULL)) CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); (void) SetLogFormat(arg1); @@ -3124,6 +3126,8 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand, max_threshold=geometry_info.sigma; if ((flags & SigmaValue) == 0) max_threshold=min_threshold; + if (arg1 == (char *) NULL) + break; if (strchr(arg1,'%') != (char *) NULL) { max_threshold*=(double) (0.01*QuantumRange); @@ -4204,6 +4208,8 @@ WandPrivate MagickBooleanType CLIListOperatorImages(MagickCLI *cli_wand, CLIWandExceptArgBreak(OptionError,"InvalidArgument",option, arg1); number_duplicates=(size_t) StringToLong(arg1); + if (arg1 == (char *) NULL) + break; p=strchr(arg1,','); if (p == (const char *) NULL) new_images=DuplicateImages(_images,number_duplicates,"-1", diff --git a/MagickWand/script-token.c b/MagickWand/script-token.c index a8e5d447bbc..1a4191caf0e 100644 --- a/MagickWand/script-token.c +++ b/MagickWand/script-token.c @@ -337,6 +337,8 @@ WandExport ScriptTokenInfo * DestroyScriptTokenInfo(ScriptTokenInfo *token_info) #define SaveChar(c) \ { \ if ((size_t) offset >= (token_info->length-1)) { \ + if (token_info == (ScriptTokenInfo *) NULL) \ + break; \ if ( token_info->length >= MagickPathExtent ) \ token_info->length += MagickPathExtent; \ else \ @@ -348,7 +350,10 @@ WandExport ScriptTokenInfo * DestroyScriptTokenInfo(ScriptTokenInfo *token_info) break; \ } \ } \ - token_info->token[offset++]=(char) (c); \ + if ( token_info->token == (char *) NULL ) \ + token_info->status=TokenStatusMemoryFailed; \ + else \ + token_info->token[offset++]=(char) (c); \ } WandExport MagickBooleanType GetScriptToken(ScriptTokenInfo *token_info)