dlopen-fail.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /* SPDX-License-Identifier: BSD-2-Clause */
  2. #ifdef HAVE_CONFIG_H
  3. #include <config.h>
  4. #endif
  5. #include <stdarg.h>
  6. #include <stddef.h>
  7. #include <stdio.h>
  8. #include <setjmp.h>
  9. #include <cmocka.h>
  10. #include <dlfcn.h>
  11. #include "tss2_tctildr.h"
  12. #include "tss2_rc.h"
  13. #include "tss2_mu.h"
  14. #include "tss2_esys.h"
  15. #include "tss2_fapi.h"
  16. #define DLOPEN_HANDLE ((void *)0xaaffffee)
  17. void *__wrap_dlopen(const char *filename, int flags)
  18. {
  19. return mock_type (void *);
  20. }
  21. void *__wrap_dlsym(void *handle, const char *symbol)
  22. {
  23. if (handle != DLOPEN_HANDLE) {
  24. fprintf(stderr, "dlsym called with weird handle %p\n", handle);
  25. exit(99);
  26. }
  27. return mock_type (void *);
  28. }
  29. static void test_tctildr(void **state)
  30. {
  31. TSS2_RC r;
  32. will_return(__wrap_dlopen, NULL);
  33. r = Tss2_TctiLdr_Initialize_Ex(NULL, NULL, NULL);
  34. assert_int_equal(r, TSS2_TCTI_RC_NOT_IMPLEMENTED);
  35. will_return(__wrap_dlopen, NULL);
  36. r = Tss2_TctiLdr_Initialize(NULL, NULL);
  37. assert_int_equal(r, TSS2_TCTI_RC_NOT_IMPLEMENTED);
  38. will_return(__wrap_dlopen, NULL);
  39. r = Tss2_TctiLdr_GetInfo(NULL, NULL);
  40. assert_int_equal(r, TSS2_TCTI_RC_NOT_IMPLEMENTED);
  41. }
  42. static void test_mu(void **state)
  43. {
  44. TSS2_RC r;
  45. will_return(__wrap_dlopen, NULL);
  46. r = Tss2_MU_UINT8_Marshal(0, NULL, 0, NULL);
  47. assert_int_equal(r, TSS2_BASE_RC_NOT_IMPLEMENTED);
  48. will_return(__wrap_dlopen, NULL);
  49. r = Tss2_MU_UINT8_Unmarshal(NULL, 0, NULL, NULL);
  50. assert_int_equal(r, TSS2_BASE_RC_NOT_IMPLEMENTED);
  51. will_return(__wrap_dlopen, NULL);
  52. r = Tss2_MU_TPM2B_DIGEST_Marshal(NULL, NULL, 0, NULL);
  53. assert_int_equal(r, TSS2_BASE_RC_NOT_IMPLEMENTED);
  54. will_return(__wrap_dlopen, NULL);
  55. r = Tss2_MU_TPM2B_DIGEST_Unmarshal(NULL, 0, NULL, NULL);
  56. assert_int_equal(r, TSS2_BASE_RC_NOT_IMPLEMENTED);
  57. will_return(__wrap_dlopen, NULL);
  58. r = Tss2_MU_TPMU_HA_Marshal(NULL, 0, NULL, 0, NULL);
  59. assert_int_equal(r, TSS2_BASE_RC_NOT_IMPLEMENTED);
  60. will_return(__wrap_dlopen, NULL);
  61. r = Tss2_MU_TPMU_HA_Unmarshal(NULL, 0, NULL, 0, NULL);
  62. assert_int_equal(r, TSS2_BASE_RC_NOT_IMPLEMENTED);
  63. }
  64. static void test_rc(void **state)
  65. {
  66. const char *r;
  67. TSS2_RC_HANDLER h;
  68. will_return(__wrap_dlopen, NULL);
  69. r = Tss2_RC_Decode(0);
  70. assert_string_equal(r, "libtss2-rc.so.0 not found.");
  71. will_return(__wrap_dlopen, NULL);
  72. h = Tss2_RC_SetHandler(0, NULL, NULL);
  73. assert_null(h);
  74. }
  75. static void test_esys(void **state)
  76. {
  77. TSS2_RC r;
  78. will_return(__wrap_dlopen, NULL);
  79. r = Esys_Initialize(NULL, NULL, NULL);
  80. assert_int_equal(r, TSS2_ESYS_RC_NOT_IMPLEMENTED);
  81. }
  82. static void test_fapi(void **state)
  83. {
  84. TSS2_RC r;
  85. will_return(__wrap_dlopen, NULL);
  86. r = Fapi_Initialize(NULL, NULL);
  87. assert_int_equal(r, TSS2_FAPI_RC_NOT_IMPLEMENTED);
  88. will_return(__wrap_dlopen, NULL);
  89. r = Fapi_Initialize_Async(NULL, NULL);
  90. assert_int_equal(r, TSS2_FAPI_RC_NOT_IMPLEMENTED);
  91. }
  92. int main(void) {
  93. const struct CMUnitTest tests[] = {
  94. cmocka_unit_test (test_tctildr),
  95. cmocka_unit_test (test_rc),
  96. cmocka_unit_test (test_mu),
  97. cmocka_unit_test (test_esys),
  98. cmocka_unit_test (test_fapi)
  99. };
  100. return cmocka_run_group_tests(tests, NULL, NULL);
  101. }