MCPcopy Create free account
hub / github.com/F-Stack/f-stack / DeserializeNumber

Function DeserializeNumber

freebsd/kern/kern_ubsan.c:1593–1625  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1591#endif
1592
1593static void
1594DeserializeNumber(char *szLocation, char *pBuffer, size_t zBUfferLength, struct CTypeDescriptor *pType, unsigned long ulNumber)
1595{
1596
1597 ASSERT(szLocation);
1598 ASSERT(pBuffer);
1599 ASSERT(zBUfferLength > 0);
1600 ASSERT(pType);
1601
1602 switch(pType->mTypeKind) {
1603 case KIND_INTEGER:
1604 if (ISSET(pType->mTypeInfo, NUMBER_SIGNED_BIT)) {
1605 longest L = llliGetNumber(szLocation, pType, ulNumber);
1606 DeserializeNumberSigned(pBuffer, zBUfferLength, pType, L);
1607 } else {
1608 ulongest UL = llluGetNumber(szLocation, pType, ulNumber);
1609 DeserializeNumberUnsigned(pBuffer, zBUfferLength, pType, UL);
1610 }
1611 break;
1612 case KIND_FLOAT:
1613#ifdef _KERNEL
1614 Report(true, "UBSan: Unexpected Float Type in %s\n", szLocation);
1615 /* NOTREACHED */
1616#else
1617 DeserializeNumberFloat(szLocation, pBuffer, zBUfferLength, pType, ulNumber);
1618#endif
1619 break;
1620 case KIND_UNKNOWN:
1621 Report(true, "UBSan: Unknown Type in %s\n", szLocation);
1622 /* NOTREACHED */
1623 break;
1624 }
1625}
1626
1627static const char *
1628DeserializeTypeCheckKind(uint8_t hhuTypeCheckKind)

Callers 7

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

Calls 6

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

Tested by

no test coverage detected