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

Function DeserializeFloatOverPointer

freebsd/kern/kern_ubsan.c:1402–1437  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1400
1401#ifndef _KERNEL
1402static void
1403DeserializeFloatOverPointer(char *pBuffer, size_t zBUfferLength, struct CTypeDescriptor *pType, unsigned long *pNumber)
1404{
1405 double D;
1406#ifdef __HAVE_LONG_DOUBLE
1407 long double LD;
1408#endif
1409
1410 ASSERT(pBuffer);
1411 ASSERT(zBUfferLength > 0);
1412 ASSERT(pType);
1413 ASSERT(pNumber);
1414 /*
1415 * This function handles 64-bit number over a pointer on 32-bit CPUs.
1416 */
1417 ASSERT((sizeof(*pNumber) * CHAR_BIT < WIDTH_64) || (zDeserializeTypeWidth(pType) >= WIDTH_64));
1418 ASSERT(sizeof(D) == sizeof(uint64_t));
1419#ifdef __HAVE_LONG_DOUBLE
1420 ASSERT(sizeof(LD) > sizeof(uint64_t));
1421#endif
1422
1423 switch (zDeserializeTypeWidth(pType)) {
1424#ifdef __HAVE_LONG_DOUBLE
1425 case WIDTH_128:
1426 case WIDTH_96:
1427 case WIDTH_80:
1428 memcpy(&LD, pNumber, sizeof(long double));
1429 snprintf(pBuffer, zBUfferLength, "%Lg", LD);
1430 break;
1431#endif
1432 case WIDTH_64:
1433 memcpy(&D, pNumber, sizeof(double));
1434 snprintf(pBuffer, zBUfferLength, "%g", D);
1435 break;
1436 }
1437}
1438
1439static void
1440DeserializeFloatInlined(char *pBuffer, size_t zBUfferLength, struct CTypeDescriptor *pType, unsigned long ulNumber)

Callers 1

DeserializeNumberFloatFunction · 0.85

Calls 3

zDeserializeTypeWidthFunction · 0.85
snprintfFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected