diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2024-04-01 20:42:27 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2024-04-01 20:42:45 +0300 |
commit | 1a1828648f3c06580ffe7a9f78c557a9e73c5bcd (patch) | |
tree | 890d79cbd8f77c7fec04a5bb8fcd273210b6b42a /libxerces-c/xercesc/util/XMLFloat.cpp | |
parent | 7683a8b7a9e8f4be61a5dee67667db54646d80d3 (diff) |
Upgrade to 3.2.5
Note that this upstream version properly fixes the use-after-free error
(CVE-2018-1311) triggered during the scanning of external DTDs
(see https://issues.apache.org/jira/browse/XERCESC-2188 for details).
Diffstat (limited to 'libxerces-c/xercesc/util/XMLFloat.cpp')
l---------[-rw-r--r--] | libxerces-c/xercesc/util/XMLFloat.cpp | 101 |
1 files changed, 1 insertions, 100 deletions
diff --git a/libxerces-c/xercesc/util/XMLFloat.cpp b/libxerces-c/xercesc/util/XMLFloat.cpp index 600d2a7..aaee503 100644..120000 --- a/libxerces-c/xercesc/util/XMLFloat.cpp +++ b/libxerces-c/xercesc/util/XMLFloat.cpp @@ -1,100 +1 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * $Id$ - */ - -// --------------------------------------------------------------------------- -// Includes -// --------------------------------------------------------------------------- -#include <xercesc/util/XMLFloat.hpp> -#include <math.h> - -XERCES_CPP_NAMESPACE_BEGIN - -// --------------------------------------------------------------------------- -// ctor/dtor -// --------------------------------------------------------------------------- -XMLFloat::XMLFloat(const XMLCh* const strValue, - MemoryManager* const manager) -:XMLAbstractDoubleFloat(manager) -{ - init(strValue); -} - -XMLFloat::~XMLFloat() -{ -} - -void XMLFloat::checkBoundary(char* const strValue) -{ - convert(strValue); - - if (fDataConverted == false) - { - /** - * float related checking - */ - - // 3.2.4 The basic value space of float consists of the values m × 2^e, where - // m is an integer whose absolute value is less than 2^24, - // and e is an integer between -149 and 104, inclusive - static const double fltMin = pow(2.0,-149); - static const double fltMax = pow(2.0,24) * pow(2.0,104); - if (fValue < (-1) * fltMax) - { - fType = NegINF; - fDataConverted = true; - fDataOverflowed = true; - } - else if (fValue > (-1)*fltMin && fValue < 0) - { - fDataConverted = true; - fValue = 0; - } - else if (fValue > 0 && fValue < fltMin ) - { - fDataConverted = true; - fValue = 0; - } - else if (fValue > fltMax) - { - fType = PosINF; - fDataConverted = true; - fDataOverflowed = true; - } - } -} - -/*** - * Support for Serialization/De-serialization - ***/ - -IMPL_XSERIALIZABLE_TOCREATE(XMLFloat) - -XMLFloat::XMLFloat(MemoryManager* const manager) -:XMLAbstractDoubleFloat(manager) -{ -} - -void XMLFloat::serialize(XSerializeEngine& serEng) -{ - XMLAbstractDoubleFloat::serialize(serEng); -} - -XERCES_CPP_NAMESPACE_END +../../../upstream/src/xercesc/util/XMLFloat.cpp
\ No newline at end of file |