]> git.tdb.fi Git - libs/al.git/commitdiff
Fix sound file signature comparisons
authorMikko Rasa <tdb@tdb.fi>
Thu, 5 Jul 2018 14:29:28 +0000 (17:29 +0300)
committerMikko Rasa <tdb@tdb.fi>
Thu, 5 Jul 2018 14:29:28 +0000 (17:29 +0300)
The standard states that if a length is not given, the character array
must be nul-terminated.

source/mp3decoder.cpp
source/oggdecoder.cpp

index 34604e320339dc5bdb0dcae98125e78d160ceee1..cc3235683db098cc5782ef11ba2b7094678f9bb1 100644 (file)
@@ -84,7 +84,7 @@ bool Mp3Decoder::detect(const string &sig)
        static const char id3_sig[] = { 'I', 'D', '3' };
        if(sig.size()<sizeof(id3_sig))
                return false;
-       return !sig.compare(0, sizeof(id3_sig), id3_sig);
+       return !sig.compare(0, sizeof(id3_sig), id3_sig, sizeof(id3_sig));
 }
 
 void Mp3Decoder::seek(unsigned pos)
index cd2def8ca78d1d86488d2ceb2d15a25ce9a916e7..374cf0b5ba06966174270a96c1d193a511843bcb 100644 (file)
@@ -106,7 +106,7 @@ bool OggDecoder::detect(const std::string &sig)
        static const char ogg_sig[] = { 'O', 'g', 'g', 'S' };
        if(sig.size()<sizeof(ogg_sig))
                return false;
-       return !sig.compare(0, sizeof(ogg_sig), ogg_sig);
+       return !sig.compare(0, sizeof(ogg_sig), ogg_sig, sizeof(ogg_sig));
 }
 
 void OggDecoder::seek(unsigned pos)