Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler.
Number of rules (primarily dangerous function names) in C/C++ ruleset: 223
Examining data/orthanc-wsi-0.7/Applications/ApplicationToolbox.cpp
Examining data/orthanc-wsi-0.7/Applications/ApplicationToolbox.h
Examining data/orthanc-wsi-0.7/Applications/DicomToTiff.cpp
Examining data/orthanc-wsi-0.7/Applications/Dicomizer.cpp
Examining data/orthanc-wsi-0.7/Framework/Algorithms/PyramidReader.cpp
Examining data/orthanc-wsi-0.7/Framework/Algorithms/PyramidReader.h
Examining data/orthanc-wsi-0.7/Framework/Algorithms/ReconstructPyramidCommand.cpp
Examining data/orthanc-wsi-0.7/Framework/Algorithms/ReconstructPyramidCommand.h
Examining data/orthanc-wsi-0.7/Framework/Algorithms/TranscodeTileCommand.cpp
Examining data/orthanc-wsi-0.7/Framework/Algorithms/TranscodeTileCommand.h
Examining data/orthanc-wsi-0.7/Framework/DicomToolbox.cpp
Examining data/orthanc-wsi-0.7/Framework/DicomToolbox.h
Examining data/orthanc-wsi-0.7/Framework/DicomizerParameters.cpp
Examining data/orthanc-wsi-0.7/Framework/DicomizerParameters.h
Examining data/orthanc-wsi-0.7/Framework/Enumerations.cpp
Examining data/orthanc-wsi-0.7/Framework/Enumerations.h
Examining data/orthanc-wsi-0.7/Framework/ImageToolbox.cpp
Examining data/orthanc-wsi-0.7/Framework/ImageToolbox.h
Examining data/orthanc-wsi-0.7/Framework/ImagedVolumeParameters.cpp
Examining data/orthanc-wsi-0.7/Framework/ImagedVolumeParameters.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/DecodedTiledPyramid.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/DecodedTiledPyramid.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/DicomPyramid.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/DicomPyramid.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/DicomPyramidInstance.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/DicomPyramidInstance.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/DicomPyramidLevel.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/DicomPyramidLevel.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/HierarchicalTiff.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/HierarchicalTiff.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/ITiledPyramid.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/OpenSlideLibrary.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/OpenSlideLibrary.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/OpenSlidePyramid.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/OpenSlidePyramid.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/PyramidWithRawTiles.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/PyramidWithRawTiles.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/SingleLevelDecodedPyramid.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/SingleLevelDecodedPyramid.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/TiledJpegImage.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/TiledPngImage.h
Examining data/orthanc-wsi-0.7/Framework/Inputs/TiledPyramidStatistics.cpp
Examining data/orthanc-wsi-0.7/Framework/Inputs/TiledPyramidStatistics.h
Examining data/orthanc-wsi-0.7/Framework/Jpeg2000Reader.cpp
Examining data/orthanc-wsi-0.7/Framework/Jpeg2000Reader.h
Examining data/orthanc-wsi-0.7/Framework/Jpeg2000Writer.cpp
Examining data/orthanc-wsi-0.7/Framework/Jpeg2000Writer.h
Examining data/orthanc-wsi-0.7/Framework/MultiThreading/BagOfTasks.h
Examining data/orthanc-wsi-0.7/Framework/MultiThreading/BagOfTasksProcessor.cpp
Examining data/orthanc-wsi-0.7/Framework/MultiThreading/BagOfTasksProcessor.h
Examining data/orthanc-wsi-0.7/Framework/MultiThreading/ICommand.h
Examining data/orthanc-wsi-0.7/Framework/Outputs/DicomPyramidWriter.cpp
Examining data/orthanc-wsi-0.7/Framework/Outputs/DicomPyramidWriter.h
Examining data/orthanc-wsi-0.7/Framework/Outputs/HierarchicalTiffWriter.cpp
Examining data/orthanc-wsi-0.7/Framework/Outputs/HierarchicalTiffWriter.h
Examining data/orthanc-wsi-0.7/Framework/Outputs/IPyramidWriter.h
Examining data/orthanc-wsi-0.7/Framework/Outputs/InMemoryTiledImage.cpp
Examining data/orthanc-wsi-0.7/Framework/Outputs/InMemoryTiledImage.h
Examining data/orthanc-wsi-0.7/Framework/Outputs/MultiframeDicomWriter.cpp
Examining data/orthanc-wsi-0.7/Framework/Outputs/MultiframeDicomWriter.h
Examining data/orthanc-wsi-0.7/Framework/Outputs/PyramidWriterBase.cpp
Examining data/orthanc-wsi-0.7/Framework/Outputs/PyramidWriterBase.h
Examining data/orthanc-wsi-0.7/Framework/Outputs/TruncatedPyramidWriter.cpp
Examining data/orthanc-wsi-0.7/Framework/Outputs/TruncatedPyramidWriter.h
Examining data/orthanc-wsi-0.7/Framework/PrecompiledHeadersWSI.cpp
Examining data/orthanc-wsi-0.7/Framework/PrecompiledHeadersWSI.h
Examining data/orthanc-wsi-0.7/Framework/Targets/FolderTarget.cpp
Examining data/orthanc-wsi-0.7/Framework/Targets/FolderTarget.h
Examining data/orthanc-wsi-0.7/Framework/Targets/IFileTarget.h
Examining data/orthanc-wsi-0.7/Framework/Targets/OrthancTarget.cpp
Examining data/orthanc-wsi-0.7/Framework/Targets/OrthancTarget.h
Examining data/orthanc-wsi-0.7/Resources/Graveyard/Hello.cpp
Examining data/orthanc-wsi-0.7/Resources/Orthanc/Sdk-1.0.0/orthanc/OrthancCPlugin.h
Examining data/orthanc-wsi-0.7/ViewerPlugin/DicomPyramidCache.cpp
Examining data/orthanc-wsi-0.7/ViewerPlugin/DicomPyramidCache.h
Examining data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp

FINAL RESULTS:

data/orthanc-wsi-0.7/Framework/Targets/FolderTarget.cpp:39:7:  [4] (format) sprintf:
  Potential format string problem (CWE-134). Make format string constant.
      sprintf(&path[0], pattern_.c_str(), count_);
data/orthanc-wsi-0.7/Resources/Orthanc/Sdk-1.0.0/orthanc/OrthancCPlugin.h:1051:7:  [4] (buffer) sscanf:
  The scanf() family's %s operation, without a limit specification, permits
  buffer overflows (CWE-120, CWE-20). Specify a limit to %s, or use a
  different input function.
      sscanf
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:81:3:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
  sprintf(tmp, "Accessing whole-slide pyramid of series %s", seriesId.c_str());
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:138:3:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
  sprintf(tmp, "Accessing tile in series %s: (%d,%d) at level %d", seriesId.c_str(), tileX, tileY, level);
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:234:5:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
    sprintf(tmp, "New instance has been added to series %s, invalidating it", resourceId);
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:298:7:  [4] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf.
      sprintf(info, "Your version of Orthanc (%s) must be above %d.%d.%d to run this plugin",
data/orthanc-wsi-0.7/Framework/ImageToolbox.cpp:192:11:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
          memcpy(&target[i * pitch], source.GetConstRow(i), pitch);
data/orthanc-wsi-0.7/Framework/Inputs/HierarchicalTiff.cpp:331:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(&tile[0], &headers[0], headers.size());
data/orthanc-wsi-0.7/Framework/Inputs/HierarchicalTiff.cpp:332:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(&tile[0] + headers.size(), &raw[2], raw.size() - 2);
data/orthanc-wsi-0.7/Framework/Jpeg2000Reader.cpp:188:13:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
            memcpy(target, that.buffer_ + that.position_, size);
data/orthanc-wsi-0.7/Framework/Outputs/MultiframeDicomWriter.cpp:134:7:  [2] (buffer) memcpy:
  Does not check for buffer overflows when copying to destination (CWE-120).
  Make sure destination can always hold the source data.
      memcpy(target, pixelData.c_str(), pixelData.size());
data/orthanc-wsi-0.7/Framework/Outputs/MultiframeDicomWriter.cpp:264:5:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
    char uid[100];
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:80:3:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  char tmp[1024];
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:137:3:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
  char tmp[1024];
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:233:5:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
    char tmp[1024];
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:297:7:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
      char info[1024];
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:321:5:  [2] (buffer) char:
  Statically-sized arrays can be improperly restricted, leading to potential
  overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use
  functions that limit length, or ensure that the size is larger than the
  maximum possible length.
    char info[1024];
data/orthanc-wsi-0.7/ViewerPlugin/Plugin.cpp:322:5:  [2] (buffer) sprintf:
  Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or
  vsnprintf. Risk is low because the source has a constant maximum length.
    sprintf(info, "The whole-slide imaging plugin will use at most %u threads to transcode the tiles", threads);
data/orthanc-wsi-0.7/Framework/Inputs/HierarchicalTiff.cpp:305:9:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    if (read != static_cast<tsize_t>(sizes[index]))
data/orthanc-wsi-0.7/Resources/Orthanc/Sdk-1.0.0/orthanc/OrthancCPlugin.h:2248:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    OrthancPluginStorageRead    read;
data/orthanc-wsi-0.7/Resources/Orthanc/Sdk-1.0.0/orthanc/OrthancCPlugin.h:2270:33:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    OrthancPluginStorageRead    read,
data/orthanc-wsi-0.7/Resources/Orthanc/Sdk-1.0.0/orthanc/OrthancCPlugin.h:2275:19:  [1] (buffer) read:
  Check buffer boundaries if used in a loop including recursive loops
  (CWE-120, CWE-20).
    params.read = read;

ANALYSIS SUMMARY:

Hits = 22
Lines analyzed = 16342 in approximately 0.38 seconds (43334 lines/second)
Physical Source Lines of Code (SLOC) = 10375
Hits@level = [0]   4 [1]   4 [2]  12 [3]   0 [4]   6 [5]   0
Hits@level+ = [0+]  26 [1+]  22 [2+]  18 [3+]   6 [4+]   6 [5+]   0
Hits/KSLOC@level+ = [0+] 2.50602 [1+] 2.12048 [2+] 1.73494 [3+] 0.578313 [4+] 0.578313 [5+]   0
Dot directories skipped = 1 (--followdotdir overrides)
Minimum risk level = 1
Not every hit is necessarily a security vulnerability.
There may be other security vulnerabilities; review your code!
See 'Secure Programming HOWTO'
(https://dwheeler.com/secure-programs) for more information.