From: Dirk Lemstra Date: Sat, 3 Feb 2018 19:11:01 +0000 (+0100) Subject: Added missing checks. X-Git-Tag: 7.0.7-23~159 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c1ddde23d6deedf6e98abc7fc4439469d17fb55d;p=imagemagick Added missing checks. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5338 Credit OSS Fuzz --- diff --git a/MagickCore/utility.c b/MagickCore/utility.c index d7ea62aee..dee2e8f05 100644 --- a/MagickCore/utility.c +++ b/MagickCore/utility.c @@ -1312,16 +1312,19 @@ MagickExport void GetPathComponent(const char *path,PathType type, } case RootPath: { - for (p=component+(strlen(component)-1); p > component; p--) - { - if (IsBasenameSeparator(*p) != MagickFalse) - break; - if (*p == '.') + if (*component != '\0') + { + for (p=component+(strlen(component)-1); p > component; p--) + { + if (IsBasenameSeparator(*p) != MagickFalse) + break; + if (*p == '.') + break; + } + if (*p == '.') + *p='\0'; break; - } - if (*p == '.') - *p='\0'; - break; + } } case HeadPath: { @@ -1331,28 +1334,27 @@ MagickExport void GetPathComponent(const char *path,PathType type, case TailPath: { if (IsBasenameSeparator(*p) != MagickFalse) - (void) CopyMagickMemory((unsigned char *) component, - (const unsigned char *) (p+1),strlen(p+1)+1); + (void) CopyMagickString(component,p+1,MagickPathExtent); break; } case BasePath: { if (IsBasenameSeparator(*p) != MagickFalse) (void) CopyMagickString(component,p+1,MagickPathExtent); - for (p=component+(strlen(component)-1); p > component; p--) - if (*p == '.') - { - *p='\0'; - break; - } + if (*component != '\0') + for (p=component+(strlen(component)-1); p > component; p--) + if (*p == '.') + { + *p='\0'; + break; + } break; } case ExtensionPath: { if (IsBasenameSeparator(*p) != MagickFalse) (void) CopyMagickString(component,p+1,MagickPathExtent); - p=component; - if (*p != '\0') + if (*component != '\0') for (p=component+strlen(component)-1; p > component; p--) if (*p == '.') break;