MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / DeserializeNumber

Function DeserializeNumber

Library/OcGuardLib/Ubsan.c:1611–1644  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1609#endif
1610
1611static void
1612DeserializeNumber(char *szLocation, char *pBuffer, size_t zBUfferLength, struct CTypeDescriptor *pType, unsigned long ulNumber)
1613{
1614
1615 ASSERT(szLocation);
1616 ASSERT(pBuffer);
1617 ASSERT(zBUfferLength > 0);
1618 ASSERT(pType);
1619
1620 switch(pType->mTypeKind) {
1621 case KIND_INTEGER:
1622 if (ISSET(pType->mTypeInfo, NUMBER_SIGNED_BIT)) {
1623 longest L = llliGetNumber(szLocation, pType, ulNumber);
1624 DeserializeNumberSigned(pBuffer, zBUfferLength, pType, L);
1625 } else {
1626 ulongest UL = llluGetNumber(szLocation, pType, ulNumber);
1627 DeserializeNumberUnsigned(pBuffer, zBUfferLength, pType, UL);
1628 }
1629 break;
1630 case KIND_FLOAT:
1631#ifdef _KERNEL
1632 Report(true, "UBSan: Unexpected Float Type in %s\n", szLocation);
1633 __unreachable();
1634 /* NOTREACHED */
1635#else
1636 DeserializeNumberFloat(szLocation, pBuffer, zBUfferLength, pType, ulNumber);
1637 break;
1638#endif
1639 case KIND_UNKNOWN:
1640 Report(true, "UBSan: Unknown Type in %s\n", szLocation);
1641 __unreachable();
1642 /* NOTREACHED */
1643 }
1644}
1645
1646static const char *
1647DeserializeTypeCheckKind(uint8_t hhuTypeCheckKind)

Callers 8

HandleOverflowFunction · 0.85
HandleNegateOverflowFunction · 0.85
HandleOutOfBoundsFunction · 0.85
HandleShiftOutOfBoundsFunction · 0.85
HandleImplicitConversionFunction · 0.85
HandleLoadInvalidValueFunction · 0.85
HandleFloatCastOverflowFunction · 0.85

Calls 6

llliGetNumberFunction · 0.85
DeserializeNumberSignedFunction · 0.85
llluGetNumberFunction · 0.85
DeserializeNumberFloatFunction · 0.85
ReportFunction · 0.70

Tested by

no test coverage detected