nixpkgs/pkgs/development/libraries/boost/CVE-2013-0252.patch

49 lines
1.9 KiB
Diff
Raw Normal View History

Index: /boost/locale/utf.hpp
===================================================================
--- /boost/locale/utf.hpp (revision 78304)
+++ /boost/locale/utf.hpp (revision 81590)
@@ -220,4 +220,6 @@
return incomplete;
tmp = *p++;
+ if (!is_trail(tmp))
+ return illegal;
c = (c << 6) | ( tmp & 0x3F);
case 2:
@@ -225,4 +227,6 @@
return incomplete;
tmp = *p++;
+ if (!is_trail(tmp))
+ return illegal;
c = (c << 6) | ( tmp & 0x3F);
case 1:
@@ -230,4 +234,6 @@
return incomplete;
tmp = *p++;
+ if (!is_trail(tmp))
+ return illegal;
c = (c << 6) | ( tmp & 0x3F);
}
Index: /libs/locale/test/test_codepage_converter.cpp
===================================================================
--- /libs/locale/test/test_codepage_converter.cpp (revision 73786)
+++ /libs/locale/test/test_codepage_converter.cpp (revision 81590)
@@ -140,4 +140,18 @@
TEST_TO("\xf8\x90\x80\x80\x80",illegal); // 400 0000
TEST_TO("\xfd\xbf\xbf\xbf\xbf\xbf",illegal); // 7fff ffff
+
+ std::cout << "-- Invalid trail" << std::endl;
+ TEST_TO("\xC2\x7F",illegal);
+ TEST_TO("\xdf\x7F",illegal);
+ TEST_TO("\xe0\x7F\x80",illegal);
+ TEST_TO("\xef\xbf\x7F",illegal);
+ TEST_TO("\xe0\x7F\x80",illegal);
+ TEST_TO("\xef\xbf\x7F",illegal);
+ TEST_TO("\xf0\x7F\x80\x80",illegal);
+ TEST_TO("\xf4\x7f\xbf\xbf",illegal);
+ TEST_TO("\xf0\x90\x7F\x80",illegal);
+ TEST_TO("\xf4\x8f\x7F\xbf",illegal);
+ TEST_TO("\xf0\x90\x80\x7F",illegal);
+ TEST_TO("\xf4\x8f\xbf\x7F",illegal);
std::cout << "-- Invalid length" << std::endl;