grishka / libtgvoip

VoIP library for Telegram clients
The Unlicense
387 stars 156 forks source link

Lots of warnings under GCC 6+ #13

Closed xvitaly closed 6 years ago

xvitaly commented 7 years ago
[ 12%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/BufferPool.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/BufferPool.cpp: In constructor 'tgvoip::BufferPool::BufferPool(unsigned int, unsigned int)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/BufferPool.cpp:20:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=1;i<count;i++){
          ~^~~~~~
[ 12%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/logging.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/logging.cpp: In function 'void tgvoip_log_file_write_header()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/logging.cpp:42:6: warning: '%s' directive output may be truncated writing up to 64 bytes into a region of size between 63 and 127 [-Wformat-truncation=]
 void tgvoip_log_file_write_header(){
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/stdio.h:939:0,
                 from /builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/logging.cpp:8:
/usr/include/bits/stdio2.h:65:44: note: '__builtin___snprintf_chk' output between 5 and 197 bytes into a destination of size 128
        __bos (__s), __fmt, __va_arg_pack ());
                                            ^
[ 12%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp: In member function 'int tgvoip::JitterBuffer::GetInternal(jitter_packet_t*, int)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:167:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(lostCount>=lossesToReset || (gotSinceReset>minDelay*25 && lostSinceReset>gotSinceReset/2)){
      ~~~~~~~~~^~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:167:48: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(lostCount>=lossesToReset || (gotSinceReset>minDelay*25 && lostSinceReset>gotSinceReset/2)){
                                   ~~~~~~~~~~~~~^~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:172:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(GetCurrentDelay()<minDelay)
       ~~~~~~~~~~~~~~~~~^~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp: In member function 'void tgvoip::JitterBuffer::PutInternal(jitter_packet_t*)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:241:46: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(i==JITTER_SLOT_COUNT || GetCurrentDelay()>=maxUsedSlots){
                             ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp: In member function 'void tgvoip::JitterBuffer::Tick()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:392:48: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (((minDelay==1 ? (avgDelay>=3) : (avgDelay>=minDelay/2)) && delayHistory[0]>minDelay && avgLate16<=0.1 && absolutelyNoLatePackets && dontDecMinDelay<32 && min>minDelay) /*|| (avgRecvTimeDiff>0 && delayHistory[0]>minDelay/2 && avgRecvTimeDiff*1000<step/2)*/) {
                                        ~~~~~~~~^~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:392:81: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (((minDelay==1 ? (avgDelay>=3) : (avgDelay>=minDelay/2)) && delayHistory[0]>minDelay && avgLate16<=0.1 && absolutelyNoLatePackets && dontDecMinDelay<32 && min>minDelay) /*|| (avgRecvTimeDiff>0 && delayHistory[0]>minDelay/2 && avgRecvTimeDiff*1000<step/2)*/) {
                                                                  ~~~~~~~~~~~~~~~^~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:392:164: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (((minDelay==1 ? (avgDelay>=3) : (avgDelay>=minDelay/2)) && delayHistory[0]>minDelay && avgLate16<=0.1 && absolutelyNoLatePackets && dontDecMinDelay<32 && min>minDelay) /*|| (avgRecvTimeDiff>0 && delayHistory[0]>minDelay/2 && avgRecvTimeDiff*1000<step/2)*/) {
                                                                                                                                                                 ~~~^~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:404:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(GetCurrentDelay()<=minDelay || min<=minDelay){
       ~~~~~~~~~~~~~~~~~^~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:404:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(GetCurrentDelay()<=minDelay || min<=minDelay){
                                      ~~~^~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/JitterBuffer.cpp:286:6: warning: unused variable 'count' [-Wunused-variable]
  int count=0;
      ^~~~~
[ 14%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/NetworkSocket.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/NetworkSocket.cpp:22:0: warning: ignoring #pragma mark  [-Wunknown-pragmas]
 #pragma mark - NetworkSocket

/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/NetworkSocket.cpp:57:0: warning: ignoring #pragma mark  [-Wunknown-pragmas]
 #pragma mark - NetworkAddress

/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/NetworkSocket.cpp:77:0: warning: ignoring #pragma mark  [-Wunknown-pragmas]
 #pragma mark - IPv4Address

/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/NetworkSocket.cpp:112:0: warning: ignoring #pragma mark  [-Wunknown-pragmas]
 #pragma mark - IPv6Address
[ 14%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp: In static member function 'static void* tgvoip::audio::AudioInputALSA::StartThread(void*)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp:74:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
[ 14%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp: In member function 'virtual void tgvoip::NetworkSocketPosix::Send(tgvoip::NetworkPacket*)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp:72:74: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
       uint32_t v4part=*((uint32_t*)&translatedAddr->sin6_addr.s6_addr[12]);
                                                                          ^
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp:97:43: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *((uint32_t*)&addr.sin6_addr.s6_addr[12])=v4addr->GetAddress();
                                           ^
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp: In member function 'virtual void tgvoip::NetworkSocketPosix::Receive(tgvoip::NetworkPacket*)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp:137:62: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   in_addr v4addr=*((in_addr *) &srcAddr.sin6_addr.s6_addr[12]);
                                                              ^
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp:137:62: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp: In member function 'virtual void tgvoip::NetworkSocketPosix::Open()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/posix/NetworkSocketPosix.cpp:186:11: warning: unused variable 'localUdpPort' [-Wunused-variable]
  uint16_t localUdpPort=ntohs(addr.sin6_port);
           ^~~~~~~~~~~~
[ 14%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.cpp: In static member function 'static void* tgvoip::audio::AudioOutputALSA::StartThread(void*)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.cpp:77:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
[ 13%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::SetRemoteEndpoints(std::vector<tgvoip::Endpoint>, bool)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:278:9: warning: unused variable 'i' [-Wunused-variable]
  size_t i;
         ^
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::Start()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:308:6: warning: unused variable 'res' [-Wunused-variable]
  int res;
      ^~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::RunRecvThread()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:808:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(i=0;i<queuedPackets.size();i++){
            ~^~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:891:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(i=0; i<outgoingStreams.size(); i++){
             ~^~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1097:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(i=0;i<incomingStreams.size();i++){
            ~^~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::RunTickThread()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1287:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(i=0;i<outgoingStreams.size();i++){
           ~^~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1326:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(i=0;i<queuedPackets.size();i++){
           ~^~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1194:7: warning: variable 'wasWaitingForAcks' set but not used [-Wunused-but-set-variable]
  bool wasWaitingForAcks=false;
       ^~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::SetMicMute(bool)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1664:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<outgoingStreams.size();i++){
          ~^~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::UpdateAudioOutputState()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1679:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<incomingStreams.size();i++){
          ~^~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::GetDebugString(char*, size_t)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1749:6: warning: unused variable 'i' [-Wunused-variable]
  int i;
      ^
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp: In member function 'void tgvoip::VoIPController::RunRecvThread()':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/VoIPController.cpp:1071:4: warning: 'packetInnerLen' may be used uninitialized in this function [-Wmaybe-uninitialized]
    if(packetInnerLen>=4){
    ^~
[ 16%] Building CXX object CMakeFiles/libtgvoip.dir/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/webrtc_dsp/webrtc/modules/audio_processing/aecm/echo_control_mobile.o
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/webrtc_dsp/webrtc/modules/audio_processing/aecm/echo_control_mobile.cc: In function 'int32_t WebRtcAecm_GetBufferFarendError(void*, const int16_t*, size_t)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/webrtc_dsp/webrtc/modules/audio_processing/aecm/echo_control_mobile.cc:212:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (nrOfSamples != 80*aecm->aecmCore->mult && nrOfSamples != 160*aecm->aecmCore->mult)
       ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/webrtc_dsp/webrtc/modules/audio_processing/aecm/echo_control_mobile.cc:212:61: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if (nrOfSamples != 80*aecm->aecmCore->mult && nrOfSamples != 160*aecm->aecmCore->mult)
                                                 ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/webrtc_dsp/webrtc/modules/audio_processing/aecm/echo_control_mobile.cc: In function 'int32_t WebRtcAecm_Process(void*, const int16_t*, const int16_t*, int16_t*, size_t, int16_t)':
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/webrtc_dsp/webrtc/modules/audio_processing/aecm/echo_control_mobile.cc:274:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (nrOfSamples != 80*aecm->aecmCore->mult && nrOfSamples != 160*aecm->aecmCore->mult)
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/webrtc_dsp/webrtc/modules/audio_processing/aecm/echo_control_mobile.cc:274:63: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (nrOfSamples != 80*aecm->aecmCore->mult && nrOfSamples != 160*aecm->aecmCore->mult)
                                                   ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~

Some of them are critical and can cause vulnerabilities. Full build log: http://koji.russianfedora.pro/kojifiles/work/tasks/5923/45923/build.log

grishka commented 7 years ago

Some of them are critical and can cause vulnerabilities.

Especially unused variables, unknown pragmas, and sugned-unsigned comparisons.

xvitaly commented 7 years ago

Especially unused variables, unknown pragmas, and sugned-unsigned comparisons.

This one:

/builddir/build/BUILD/tdesktop-1.0.37/Telegram/ThirdParty/libtgvoip/logging.cpp:42:6: warning: '%s' directive output may be truncated writing up to 64 bytes into a region of size between 63 and 127 [-Wformat-truncation=]
grishka commented 7 years ago

That one isn't a vulnerability. It doesn't overflow a buffer. Yes, it may truncate the resulting string to fit into the buffer. That's the point of using snprintf, to not overflow anything, ever.

berkus commented 7 years ago

May I ask @grishka where did you learn programming in general and programming C/C++ specifically?

grishka commented 7 years ago

On the internet.