Fix classifying incomplete UTF-8 sequences in Boost.Locale
This commit is contained in:
parent
0fa3a498eb
commit
6b46fc2044
|
@ -0,0 +1,52 @@
|
|||
Index: boost/locale/utf.hpp
|
||||
===================================================================
|
||||
--- boost/locale/utf.hpp (revision 81589)
|
||||
+++ boost/locale/utf.hpp (revision 81590)
|
||||
@@ -219,16 +219,22 @@
|
||||
if(BOOST_LOCALE_UNLIKELY(p==e))
|
||||
return incomplete;
|
||||
tmp = *p++;
|
||||
+ if (!is_trail(tmp))
|
||||
+ return illegal;
|
||||
c = (c << 6) | ( tmp & 0x3F);
|
||||
case 2:
|
||||
if(BOOST_LOCALE_UNLIKELY(p==e))
|
||||
return incomplete;
|
||||
tmp = *p++;
|
||||
+ if (!is_trail(tmp))
|
||||
+ return illegal;
|
||||
c = (c << 6) | ( tmp & 0x3F);
|
||||
case 1:
|
||||
if(BOOST_LOCALE_UNLIKELY(p==e))
|
||||
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 81589)
|
||||
+++ libs/locale/test/test_codepage_converter.cpp (revision 81590)
|
||||
@@ -140,6 +140,20 @@
|
||||
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;
|
||||
|
||||
/// Test that this actually works
|
|
@ -28,7 +28,7 @@ Name: boost
|
|||
Summary: The free peer-reviewed portable C++ source libraries
|
||||
Version: 1.48.0
|
||||
%define version_enc 1_48_0
|
||||
Release: 13%{?dist}
|
||||
Release: 14%{?dist}
|
||||
License: Boost and MIT and Python
|
||||
|
||||
# The CMake build framework (set of CMakeLists.txt and module.cmake files) is
|
||||
|
@ -143,6 +143,9 @@ Patch15: boost-1.48.0-pool.patch
|
|||
# https://bugzilla.redhat.com/show_bug.cgi?id=832265
|
||||
Patch16: boost-1.48.0-locale.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=907481
|
||||
Patch17: boost-1.48.0-invalid-utf8.patch
|
||||
|
||||
%bcond_with tests
|
||||
%bcond_with docs_generated
|
||||
|
||||
|
@ -516,6 +519,7 @@ sed 's/_FEDORA_SONAME/%{sonamever}/' %{PATCH1} | %{__patch} -p0 --fuzz=0
|
|||
%patch12 -p3
|
||||
%patch15 -p0
|
||||
%patch16 -p1
|
||||
%patch17 -p0
|
||||
|
||||
%build
|
||||
# Support for building tests.
|
||||
|
@ -1019,6 +1023,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||
%{_mandir}/man1/bjam.1*
|
||||
|
||||
%changelog
|
||||
* Wed Feb 13 2013 Petr Machata <pmachata@redhat.com> - 1.48.0-14
|
||||
- Fix classifying incomplete UTF-8 sequences in Boost.Locale (#907481)
|
||||
|
||||
* Thu Jun 21 2012 Petr Machata <pmachata@redhat.com> - 1.48.0-13
|
||||
- Build Boost.Locale backends
|
||||
- Resolves: #832265
|
||||
|
|
Loading…
Reference in New Issue