| 446 | } |
| 447 | } |
| 448 | void CheckLinuxSigOffset(char* name, const char* symbol, void * handle) |
| 449 | { |
| 450 | void *ptr = GetLinuxSigPtr(handle, symbol); |
| 451 | if(!ptr) |
| 452 | { |
| 453 | return; |
| 454 | } |
| 455 | const char* sigOffsetKey = NULL; |
| 456 | const char* sigOffsetByte = NULL; |
| 457 | int sigOffset = -1; |
| 458 | char sigOffsetName[128]; |
| 459 | char sigByteName[128]; |
| 460 | |
| 461 | snprintf(sigOffsetName, sizeof(sigOffsetName), "%s_Offset", name); |
| 462 | snprintf(sigByteName, sizeof(sigByteName), "%s_Byte_Lin", name); |
| 463 | |
| 464 | sigOffsetKey = symbols.GetKeyValue((const char *)sigOffsetName); |
| 465 | |
| 466 | if(sigOffsetKey == NULL) |
| 467 | { |
| 468 | |
| 469 | //Maybe it has multiple? |
| 470 | for(unsigned int i = 1; i <= 4; i++) |
| 471 | { |
| 472 | snprintf(sigOffsetName, sizeof(sigOffsetName), "%s_Offset%i", name, i); |
| 473 | snprintf(sigByteName, sizeof(sigByteName), "%s_Byte_Lin%i", name, i); |
| 474 | sigOffsetKey = symbols.GetKeyValue((const char *)sigOffsetName); |
| 475 | |
| 476 | if(sigOffsetKey == NULL) |
| 477 | { |
| 478 | break; |
| 479 | } |
| 480 | |
| 481 | sigOffset = GetOffset(sigOffsetKey, false); |
| 482 | sigOffsetByte = symbols.GetKeyValue((const char *)sigByteName); |
| 483 | |
| 484 | if(sigOffset != -1 && sigOffsetByte != NULL)//Got the offset in the function |
| 485 | { |
| 486 | uint8_t iByte = strtoul(sigOffsetByte, NULL, 16); |
| 487 | uint8_t iCompare = *(uint8_t *)((intptr_t)ptr + sigOffset); |
| 488 | |
| 489 | if(iByte == iCompare) |
| 490 | { |
| 491 | printf(" l: %s -> %s (%4d) \\x%02X == \\x%02X GOOD\n", name, sigOffsetKey, sigOffset, iCompare, iByte); |
| 492 | } |
| 493 | else |
| 494 | { |
| 495 | printf("! l: %s -> %s (%4d) \\x%02X != \\x%02X BAD\n", name, sigOffsetKey, sigOffset, iCompare, iByte); |
| 496 | } |
| 497 | } |
| 498 | } |
| 499 | } |
| 500 | else |
| 501 | { |
| 502 | sigOffset = GetOffset(sigOffsetKey, false); |
| 503 | sigOffsetByte = symbols.GetKeyValue((const char *)sigByteName); |
| 504 | |
| 505 | if(sigOffset != -1 && sigOffsetByte != NULL)//Got the offset in the function |
no test coverage detected