summaryrefslogtreecommitdiff
path: root/libxerces-c/xercesc/util/XMLFloat.cpp
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-04-01 20:42:27 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2024-04-01 20:42:45 +0300
commit1a1828648f3c06580ffe7a9f78c557a9e73c5bcd (patch)
tree890d79cbd8f77c7fec04a5bb8fcd273210b6b42a /libxerces-c/xercesc/util/XMLFloat.cpp
parent7683a8b7a9e8f4be61a5dee67667db54646d80d3 (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.cpp101
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