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

Function llluGetNumber

freebsd/kern/kern_ubsan.c:1517–1554  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1515}
1516
1517static ulongest
1518llluGetNumber(char *szLocation, struct CTypeDescriptor *pType, unsigned long ulNumber)
1519{
1520 size_t zNumberWidth;
1521 ulongest UL = 0;
1522
1523 ASSERT(pType);
1524
1525 zNumberWidth = zDeserializeTypeWidth(pType);
1526 switch (zNumberWidth) {
1527 default:
1528 Report(true, "UBSan: Unexpected %zu-Bit Type in %s\n", zNumberWidth, szLocation);
1529 /* NOTREACHED */
1530 case WIDTH_128:
1531#ifdef __SIZEOF_INT128__
1532 memcpy(&UL, REINTERPRET_CAST(ulongest *, ulNumber), sizeof(ulongest));
1533 break;
1534#else
1535 Report(true, "UBSan: Unexpected 128-Bit Type in %s\n", szLocation);
1536 /* NOTREACHED */
1537#endif
1538 case WIDTH_64:
1539 if (sizeof(ulNumber) * CHAR_BIT < WIDTH_64) {
1540 UL = *REINTERPRET_CAST(uint64_t *, ulNumber);
1541 break;
1542 }
1543 /* FALLTHROUGH */
1544 case WIDTH_32:
1545 /* FALLTHROUGH */
1546 case WIDTH_16:
1547 /* FALLTHROUGH */
1548 case WIDTH_8:
1549 UL = ulNumber;
1550 break;
1551 }
1552
1553 return UL;
1554}
1555
1556#ifndef _KERNEL
1557static void

Callers 2

DeserializeNumberFunction · 0.85
isShiftExponentTooLargeFunction · 0.85

Calls 3

zDeserializeTypeWidthFunction · 0.85
ReportFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected