Fix svace issue (uint32_t to long or std::streamsize) 25/287825/2
authorEunki, Hong <eunkiki.hong@samsung.com>
Tue, 7 Feb 2023 02:04:06 +0000 (11:04 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Tue, 7 Feb 2023 03:37:55 +0000 (12:37 +0900)
To convert unsigned value into signed value safely,
we should convert as unsigned type with same size as signed type,
and after done, convert into signed type.

Change-Id: If6e7b613cea0b824866761f19b693fe553190b5a
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp
dali-scene3d/public-api/loader/gltf2-loader.cpp
dali-scene3d/public-api/loader/ktx-loader.cpp
dali-scene3d/public-api/loader/mesh-definition.cpp

index 27f0dce..42b53b1 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -61,11 +61,11 @@ void TestGraphicsBuffer::Upload(uint32_t offset, uint32_t size)
   if(size <= memory.size() && mCreated)
   {
     // Use subData to avoid re-allocation
   if(size <= memory.size() && mCreated)
   {
     // Use subData to avoid re-allocation
-    mGl.BufferSubData(GetTarget(), offset, size, &memory[offset]);
+    mGl.BufferSubData(GetTarget(), static_cast<GLintptr>(static_cast<unsigned long>(offset)), static_cast<GLsizeiptr>(static_cast<unsigned long>(size)), &memory[offset]);
   }
   else
   {
   }
   else
   {
-    mGl.BufferData(GetTarget(), GLsizeiptr(size), &memory[0], GL_STATIC_DRAW); //@todo Query - do we need other usages?
+    mGl.BufferData(GetTarget(), static_cast<GLsizeiptr>(static_cast<unsigned long>(size)), &memory[0], GL_STATIC_DRAW); //@todo Query - do we need other usages?
     mCreated = true;
   }
 }
     mCreated = true;
   }
 }
index be1be41..69bcd51 100644 (file)
 #include <dali-scene3d/public-api/loader/gltf2-loader.h>
 
 // EXTERNAL INCLUDES
 #include <dali-scene3d/public-api/loader/gltf2-loader.h>
 
 // EXTERNAL INCLUDES
+#include <dali/devel-api/threading/mutex.h>
 #include <dali/integration-api/debug.h>
 #include <dali/public-api/images/image-operations.h>
 #include <dali/public-api/math/quaternion.h>
 #include <dali/integration-api/debug.h>
 #include <dali/public-api/images/image-operations.h>
 #include <dali/public-api/math/quaternion.h>
-#include <dali/devel-api/threading/mutex.h>
 #include <memory>
 
 // INTERNAL INCLUDES
 #include <memory>
 
 // INTERNAL INCLUDES
@@ -467,7 +467,7 @@ SamplerFlags::Type ConvertSampler(const gt::Ref<gt::Sampler>& sampler)
 TextureDefinition ConvertTextureInfo(const gt::TextureInfo& mm, ConversionContext& context, const ImageMetadata& metaData = ImageMetadata())
 {
   TextureDefinition textureDefinition;
 TextureDefinition ConvertTextureInfo(const gt::TextureInfo& mm, ConversionContext& context, const ImageMetadata& metaData = ImageMetadata())
 {
   TextureDefinition textureDefinition;
-  std::string uri = std::string(mm.mTexture->mSource->mUri);
+  std::string       uri = std::string(mm.mTexture->mSource->mUri);
   if(uri.empty())
   {
     uint32_t bufferIndex = mm.mTexture->mSource->mBufferView->mBuffer.GetIndex();
   if(uri.empty())
   {
     uint32_t bufferIndex = mm.mTexture->mSource->mBufferView->mBuffer.GetIndex();
@@ -478,7 +478,7 @@ TextureDefinition ConvertTextureInfo(const gt::TextureInfo& mm, ConversionContex
       stream.seekg(mm.mTexture->mSource->mBufferView->mByteOffset, stream.beg);
       std::vector<uint8_t> dataBuffer;
       dataBuffer.resize(mm.mTexture->mSource->mBufferView->mByteLength);
       stream.seekg(mm.mTexture->mSource->mBufferView->mByteOffset, stream.beg);
       std::vector<uint8_t> dataBuffer;
       dataBuffer.resize(mm.mTexture->mSource->mBufferView->mByteLength);
-      stream.read(reinterpret_cast<char*>(dataBuffer.data()), mm.mTexture->mSource->mBufferView->mByteLength);
+      stream.read(reinterpret_cast<char*>(dataBuffer.data()), static_cast<std::streamsize>(static_cast<size_t>(mm.mTexture->mSource->mBufferView->mByteLength)));
       return TextureDefinition{std::move(dataBuffer), ConvertSampler(mm.mTexture->mSampler), metaData.mMinSize, metaData.mSamplingMode};
     }
     return TextureDefinition();
       return TextureDefinition{std::move(dataBuffer), ConvertSampler(mm.mTexture->mSampler), metaData.mMinSize, metaData.mSamplingMode};
     }
     return TextureDefinition();
@@ -974,7 +974,7 @@ void LoadDataFromAccessor(ConversionContext& context, uint32_t bufferIndex, Vect
   auto& stream = buffer.GetBufferStream();
   stream.clear();
   stream.seekg(offset, stream.beg);
   auto& stream = buffer.GetBufferStream();
   stream.clear();
   stream.seekg(offset, stream.beg);
-  stream.read(reinterpret_cast<char*>(dataBuffer.Begin()), size);
+  stream.read(reinterpret_cast<char*>(dataBuffer.Begin()), static_cast<std::streamsize>(static_cast<size_t>(size)));
 }
 
 template<typename T>
 }
 
 template<typename T>
@@ -1178,7 +1178,7 @@ void ProcessSkins(const gt::Document& doc, ConversionContext& context)
 
     virtual void Provide(Matrix& ibm) override
     {
 
     virtual void Provide(Matrix& ibm) override
     {
-      DALI_ASSERT_ALWAYS(mStream.read(reinterpret_cast<char*>(ibm.AsFloat()), mElementSizeBytes));
+      DALI_ASSERT_ALWAYS(mStream.read(reinterpret_cast<char*>(ibm.AsFloat()), static_cast<std::streamsize>(static_cast<size_t>(mElementSizeBytes))));
     }
   };
 
     }
   };
 
index 2b52734..2261ff8 100644 (file)
@@ -243,7 +243,7 @@ bool LoadKtxData(const std::string& path, EnvironmentMapData& environmentMapData
       for(uint32_t face = 0u; face < header.numberOfFaces; ++face)
       {
         std::unique_ptr<uint8_t, void (*)(uint8_t*)> img(new uint8_t[byteSize], FreeBuffer);
       for(uint32_t face = 0u; face < header.numberOfFaces; ++face)
       {
         std::unique_ptr<uint8_t, void (*)(uint8_t*)> img(new uint8_t[byteSize], FreeBuffer);
-        if(fp.read(reinterpret_cast<char*>(img.get()), byteSize).good() == false)
+        if(fp.read(reinterpret_cast<char*>(img.get()), static_cast<std::streamsize>(static_cast<size_t>(byteSize))).good() == false)
         {
           return false;
         }
         {
           return false;
         }
index 10adc2d..3beaf83 100644 (file)
@@ -79,7 +79,7 @@ bool ReadBlob(const MeshDefinition::Blob& descriptor, std::istream& source, uint
 
   if(descriptor.IsConsecutive())
   {
 
   if(descriptor.IsConsecutive())
   {
-    return !!source.read(reinterpret_cast<char*>(target), descriptor.mLength);
+    return !!source.read(reinterpret_cast<char*>(target), static_cast<std::streamsize>(static_cast<size_t>(descriptor.mLength)));
   }
   else
   {
   }
   else
   {
@@ -541,12 +541,9 @@ void MeshDefinition::Blob::ApplyMinMax(const std::vector<float>& min, const std:
   const auto numComponents = std::max(min.size(), max.size());
 
   using ClampFn   = void (*)(const float*, const float*, uint32_t, float&);
   const auto numComponents = std::max(min.size(), max.size());
 
   using ClampFn   = void (*)(const float*, const float*, uint32_t, float&);
-  ClampFn clampFn = min.empty() ? (max.empty() ? static_cast<ClampFn>(nullptr) : [](const float* min, const float* max, uint32_t i, float& value)
-                                     { value = std::min(max[i], value); })
-                                : (max.empty() ? [](const float* min, const float* max, uint32_t i, float& value)
-                                     { value = std::max(min[i], value); }
-                                               : static_cast<ClampFn>([](const float* min, const float* max, uint32_t i, float& value)
-                                                                      { value = std::min(std::max(min[i], value), max[i]); }));
+  ClampFn clampFn = min.empty() ? (max.empty() ? static_cast<ClampFn>(nullptr) : [](const float* min, const float* max, uint32_t i, float& value) { value = std::min(max[i], value); })
+                                : (max.empty() ? [](const float* min, const float* max, uint32_t i, float& value) { value = std::max(min[i], value); }
+                                               : static_cast<ClampFn>([](const float* min, const float* max, uint32_t i, float& value) { value = std::min(std::max(min[i], value), max[i]); }));
 
   if(!clampFn)
   {
 
   if(!clampFn)
   {
@@ -686,7 +683,7 @@ MeshDefinition::LoadRaw(const std::string& modelsPath, BufferDefinition::Vector&
       raw.mIndices.resize(indexCount); // NOTE: we need space for uint32_ts initially.
 
       std::string path;
       raw.mIndices.resize(indexCount); // NOTE: we need space for uint32_ts initially.
 
       std::string path;
-      auto u8s = reinterpret_cast<uint8_t*>(raw.mIndices.data()) + indexCount;
+      auto        u8s    = reinterpret_cast<uint8_t*>(raw.mIndices.data()) + indexCount;
       auto&       stream = GetAvailableData(fileStream, meshPath, buffers[mIndices.mBufferIdx], path);
       if(!ReadAccessor(mIndices, stream, u8s))
       {
       auto&       stream = GetAvailableData(fileStream, meshPath, buffers[mIndices.mBufferIdx], path);
       if(!ReadAccessor(mIndices, stream, u8s))
       {
@@ -709,7 +706,6 @@ MeshDefinition::LoadRaw(const std::string& modelsPath, BufferDefinition::Vector&
                          "Index buffer length not a multiple of element size");
       raw.mIndices.resize(mIndices.mBlob.mLength / sizeof(unsigned short));
 
                          "Index buffer length not a multiple of element size");
       raw.mIndices.resize(mIndices.mBlob.mLength / sizeof(unsigned short));
 
-
       std::string path;
       auto&       stream = GetAvailableData(fileStream, meshPath, buffers[mIndices.mBufferIdx], path);
       if(!ReadAccessor(mIndices, stream, reinterpret_cast<uint8_t*>(raw.mIndices.data())))
       std::string path;
       auto&       stream = GetAvailableData(fileStream, meshPath, buffers[mIndices.mBufferIdx], path);
       if(!ReadAccessor(mIndices, stream, reinterpret_cast<uint8_t*>(raw.mIndices.data())))