]> granicus.if.org Git - imagemagick/commitdiff
Added missing checks.
authorDirk Lemstra <dirk@git.imagemagick.org>
Sat, 3 Feb 2018 19:11:01 +0000 (20:11 +0100)
committerDirk Lemstra <dirk@git.imagemagick.org>
Sat, 3 Feb 2018 19:11:23 +0000 (20:11 +0100)
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5338
Credit OSS Fuzz

MagickCore/utility.c

index d7ea62aeeb81388994202fe13039c029bfaa713e..dee2e8f051e386bd25624b5625dc299c41b979f6 100644 (file)
@@ -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;