* [UUID] BugFix: Correct a memory mismanagement error in UUID programming due to the way xuuid_t is utilized.

This commit is contained in:
Robert MacGregor 2021-08-14 17:44:17 -04:00
parent 3c61538811
commit eca3fbfa67
3 changed files with 30 additions and 24 deletions

View file

@ -975,13 +975,16 @@ ConsoleSetType( TypePID )
else else
{ {
Torque::UUID uuid; Torque::UUID uuid;
if( !uuid.fromString( argv[ 0 ] ) )
{ if( !uuid.fromString( argv[ 0 ] ) )
{
Con::errorf( "Error parsing UUID in PID: '%s'", argv[ 0 ] ); Con::errorf( "Error parsing UUID in PID: '%s'", argv[ 0 ] );
*pid = NULL; *pid = NULL;
} }
else else
*pid = SimPersistID::findOrCreate( uuid ); {
*pid = SimPersistID::findOrCreate(uuid);
}
} }
} }
else else

View file

@ -68,32 +68,15 @@
#include <ctype.h> #include <ctype.h>
#include "core/util/md5.h" #include "core/util/md5.h"
#include "core/util/uuid.h"
#include "console/enginePrimitives.h" #include "console/enginePrimitives.h"
#if defined (TORQUE_OS_MAC) && (defined(TORQUE_CPU_X64) || defined(TORQUE_CPU_ARM64))
typedef unsigned int unsigned32;
#else
typedef unsigned long unsigned32;
#endif
typedef unsigned short unsigned16;
typedef unsigned char unsigned8;
typedef struct { typedef struct {
char nodeID[6]; char nodeID[6];
} uuid_node_t; } uuid_node_t;
#undef xuuid_t #undef xuuid_t
typedef struct _uuid_t
{
unsigned32 time_low;
unsigned16 time_mid;
unsigned16 time_hi_and_version;
unsigned8 clock_seq_hi_and_reserved;
unsigned8 clock_seq_low;
unsigned8 node[6];
} xuuid_t;
/* data type for UUID generator persistent state */ /* data type for UUID generator persistent state */
typedef struct { typedef struct {

View file

@ -28,11 +28,31 @@
#endif #endif
#include "console/engineTypeInfo.h" #include "console/engineTypeInfo.h"
#if defined (TORQUE_OS_MAC) && (defined(TORQUE_CPU_X64) || defined(TORQUE_CPU_ARM64))
typedef unsigned int unsigned32;
#else
typedef unsigned long unsigned32;
#endif
typedef unsigned short unsigned16;
typedef unsigned char unsigned8;
class xuuid_t
{
public:
unsigned32 time_low;
unsigned16 time_mid;
unsigned16 time_hi_and_version;
unsigned8 clock_seq_hi_and_reserved;
unsigned8 clock_seq_low;
unsigned8 node[6];
};
namespace Torque namespace Torque
{ {
/// A universally unique identifier. /// A universally unique identifier.
class UUID class UUID : public xuuid_t
{ {
friend class UUIDEngineExport; friend class UUIDEngineExport;
public: public: