From c1ddde23d6deedf6e98abc7fc4439469d17fb55d Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Sat, 3 Feb 2018 20:11:01 +0100 Subject: [PATCH] Added missing checks. https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5338 Credit OSS Fuzz --- MagickCore/utility.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) 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; -- 2.40.0