Merge pull request #4829 from assimp/kimkulling/avoid_undefined_shift_issue-4822
Avoid undefined-shift in Assimp::ASE::Parser::ParseLV4MeshFace.kimkulling/fix_heap_overflow_issue-4831
commit
65bedac389
|
@ -87,10 +87,6 @@ ASEImporter::ASEImporter() :
|
|||
// empty
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Destructor, private as well
|
||||
ASEImporter::~ASEImporter() = default;
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Returns whether the class can handle the format of the given file.
|
||||
bool ASEImporter::CanRead(const std::string &pFile, IOSystem *pIOHandler, bool /*checkSig*/) const {
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace Assimp {
|
|||
class ASEImporter : public BaseImporter {
|
||||
public:
|
||||
ASEImporter();
|
||||
~ASEImporter() override;
|
||||
~ASEImporter() override = default;
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
/** Returns whether the class can handle the format of the given file.
|
||||
|
|
|
@ -1774,7 +1774,13 @@ void Parser::ParseLV4MeshFace(ASE::Face &out) {
|
|||
// FIX: There needn't always be a value, sad but true
|
||||
while (true) {
|
||||
if (*filePtr < '9' && *filePtr >= '0') {
|
||||
uint32_t value = strtoul10(filePtr, &filePtr);
|
||||
if (value < 32) {
|
||||
out.iSmoothGroup |= (1 << strtoul10(filePtr, &filePtr));
|
||||
} else {
|
||||
const std::string message = std::string("Unable to set smooth group, value with ") + ai_to_string(value) + std::string(" out of range");
|
||||
LogWarning(message.c_str());
|
||||
}
|
||||
}
|
||||
SkipSpaces(&filePtr);
|
||||
if (',' != *filePtr) {
|
||||
|
|
|
@ -4,7 +4,6 @@ Open Asset Import Library (assimp)
|
|||
|
||||
Copyright (c) 2006-2022, assimp team
|
||||
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use of this software in source and binary forms,
|
||||
|
@ -385,12 +384,10 @@ struct Dummy : public BaseNode {
|
|||
/** \brief Class to parse ASE files
|
||||
*/
|
||||
class Parser {
|
||||
private:
|
||||
Parser() AI_NO_EXCEPT {
|
||||
// empty
|
||||
}
|
||||
|
||||
public:
|
||||
/// @brief No default constructor.
|
||||
Parser() = delete;
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//! Construct a parser from a given input file which is
|
||||
//! guaranteed to be terminated with zero.
|
||||
|
|
Loading…
Reference in New Issue