23 lines
1.1 KiB
Diff
23 lines
1.1 KiB
Diff
|
# HG changeset patch
|
||
|
# Parent 45680ce4ca06795cbca1ea5a9ae8a7a11ab95cf1
|
||
|
The code tries to find a codec in a list of codecs. For this it searches for a given prefix.
|
||
|
But the prefix is of type char16_t, which means 2 bytes per character instead of 1, as was compared here.
|
||
|
On big endian this created some false positives, as the order of bytes is different and some characters only
|
||
|
occupy "the first" byte, having the second null'ed out.
|
||
|
Noticed because of gtest: MediaMIMETypes.MediaCodecs
|
||
|
|
||
|
Upstream bugreport: https://bugzilla.mozilla.org/show_bug.cgi?id=1573381
|
||
|
|
||
|
diff -r 45680ce4ca06 -r 381102061fcc dom/media/MediaMIMETypes.cpp
|
||
|
--- a/dom/media/MediaMIMETypes.cpp Mon Aug 05 09:28:53 2019 +0200
|
||
|
+++ b/dom/media/MediaMIMETypes.cpp Tue Aug 13 07:51:27 2019 +0200
|
||
|
@@ -87,7 +87,7 @@
|
||
|
const size_t prefixLength = aCodecPrefix.Length();
|
||
|
for (const auto& myCodec : Range()) {
|
||
|
if (myCodec.Length() >= prefixLength &&
|
||
|
- memcmp(myCodec.Data(), aCodecPrefix.Data(), prefixLength) == 0) {
|
||
|
+ memcmp(myCodec.Data(), aCodecPrefix.Data(), prefixLength * sizeof(char16_t)) == 0) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|