LINUX.ORG.RU

История изменений

Исправление safocl, (текущая версия) :

https://github.com/devbrain/musac/blob/aa9b7c207dd934afaac7f0f35faf88c6369dbd...
тут выдаётся предупреждение:

[20/228] Building CXX object src/musac/sdk/CMakeFiles/musac_sdk.dir/audio_converter.cc.o
/musac/src/musac/sdk/audio_converter.cc: In static member function ‘static musac::buffer<unsigned char> musac::audio_converter::convert(const musac::audio_spec&, const uint8_t*, size_t, const musac::audio_spec&)’:
/musac/src/musac/sdk/audio_converter.cc:73:16: warning: ‘void* memcpy(void*, const void*, size_t)’ writing between 4294967296 and 18446744069414584320 bytes into a region of size between 0 and 4294967295 [-Wstringop-overflow=]
   73 |     std::memcpy(working_buffer.data(), src_data, src_len);
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


оно и понятно — тут зачем то выше выделение памяти делается по значению не выше чем `unsigned int` (при чём явным static_cast), хотя копирование происходит исходя из значения по типу `size_t`:
buffer<uint8_t> working_buffer(static_cast<unsigned int>(src_len));

Исправление safocl, :

https://github.com/devbrain/musac/blob/aa9b7c207dd934afaac7f0f35faf88c6369dbd...
тут выдаётся предупреждение:

[20/228] Building CXX object src/musac/sdk/CMakeFiles/musac_sdk.dir/audio_converter.cc.o
/musac/src/musac/sdk/audio_converter.cc: In static member function ‘static musac::buffer<unsigned char> musac::audio_converter::convert(const musac::audio_spec&, const uint8_t*, size_t, const musac::audio_spec&)’:
/musac/src/musac/sdk/audio_converter.cc:73:16: warning: ‘void* memcpy(void*, const void*, size_t)’ writing between 4294967296 and 18446744069414584320 bytes into a region of size between 0 and 4294967295 [-Wstringop-overflow=]
   73 |     std::memcpy(working_buffer.data(), src_data, src_len);
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


оно и понятно — тут зачем то выше выделение памяти делается по значению не выше чем `unsigned int` (при чём явным static_cast), хотя копирование происходит исходя из значения по типу `size_t`.

Исходная версия safocl, :

https://github.com/devbrain/musac/blob/aa9b7c207dd934afaac7f0f35faf88c6369dbd...
тут выдаётся ошибка:

[20/228] Building CXX object src/musac/sdk/CMakeFiles/musac_sdk.dir/audio_converter.cc.o
/musac/src/musac/sdk/audio_converter.cc: In static member function ‘static musac::buffer<unsigned char> musac::audio_converter::convert(const musac::audio_spec&, const uint8_t*, size_t, const musac::audio_spec&)’:
/musac/src/musac/sdk/audio_converter.cc:73:16: warning: ‘void* memcpy(void*, const void*, size_t)’ writing between 4294967296 and 18446744069414584320 bytes into a region of size between 0 and 4294967295 [-Wstringop-overflow=]
   73 |     std::memcpy(working_buffer.data(), src_data, src_len);
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


оно и понятно — тут зачем то выше выделение памяти делается по значению не выше чем `unsigned int` (при чём явным static_cast), хотя копирование происходит исходя из значения по типу `size_t`.