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

Function Report

freebsd/kern/kern_ubsan.c:1182–1265  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1180/* Local utility functions */
1181
1182static void
1183Report(bool isFatal, const char *pFormat, ...)
1184{
1185 va_list ap;
1186
1187 ASSERT(pFormat);
1188
1189 va_start(ap, pFormat);
1190#if defined(_KERNEL)
1191 if (isFatal)
1192 vpanic(pFormat, ap);
1193 else
1194 vprintf(pFormat, ap);
1195#else
1196 if (ubsan_flags == -1) {
1197 char buf[1024];
1198 char *p;
1199
1200 ubsan_flags = UBSAN_STDERR;
1201
1202 if (getenv_r("LIBC_UBSAN", buf, sizeof(buf)) != -1) {
1203 for (p = buf; *p; p++) {
1204 switch (*p) {
1205 case 'a':
1206 SET(ubsan_flags, UBSAN_ABORT);
1207 break;
1208 case 'A':
1209 CLR(ubsan_flags, UBSAN_ABORT);
1210 break;
1211 case 'e':
1212 SET(ubsan_flags, UBSAN_STDERR);
1213 break;
1214 case 'E':
1215 CLR(ubsan_flags, UBSAN_STDERR);
1216 break;
1217 case 'l':
1218 SET(ubsan_flags, UBSAN_SYSLOG);
1219 break;
1220 case 'L':
1221 CLR(ubsan_flags, UBSAN_SYSLOG);
1222 break;
1223 case 'o':
1224 SET(ubsan_flags, UBSAN_STDOUT);
1225 break;
1226 case 'O':
1227 CLR(ubsan_flags, UBSAN_STDOUT);
1228 break;
1229 default:
1230 break;
1231 }
1232 }
1233 }
1234 }
1235
1236 // The *v*print* functions can flush the va_list argument.
1237 // Create a local copy for each call to prevent invalid read.
1238 if (ISSET(ubsan_flags, UBSAN_STDOUT)) {
1239 va_list tmp;

Callers 15

HandleOverflowFunction · 0.85
HandleNegateOverflowFunction · 0.85
HandleBuiltinUnreachableFunction · 0.85
HandleTypeMismatchFunction · 0.85
HandleOutOfBoundsFunction · 0.85
HandleShiftOutOfBoundsFunction · 0.85
HandleLoadInvalidValueFunction · 0.85
HandleInvalidBuiltinFunction · 0.85
HandleCFIBadTypeFunction · 0.85

Calls 3

abortClass · 0.85
vpanicFunction · 0.70
vprintfFunction · 0.70

Tested by

no test coverage detected