xref: /aosp_15_r20/external/tpm2-tss/test/unit/tctildr-getinfo.c (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1*758e9fbaSOystein Eftevaag /*
2*758e9fbaSOystein Eftevaag  * SPDX-License-Identifier: BSD-2-Clause
3*758e9fbaSOystein Eftevaag  * Copyright 2019, Intel Corporation
4*758e9fbaSOystein Eftevaag  */
5*758e9fbaSOystein Eftevaag 
6*758e9fbaSOystein Eftevaag #include <inttypes.h>
7*758e9fbaSOystein Eftevaag #include <limits.h>
8*758e9fbaSOystein Eftevaag #include <stdarg.h>
9*758e9fbaSOystein Eftevaag #include <stdbool.h>
10*758e9fbaSOystein Eftevaag #include <stdlib.h>
11*758e9fbaSOystein Eftevaag #include <stdio.h>
12*758e9fbaSOystein Eftevaag #include <string.h>
13*758e9fbaSOystein Eftevaag 
14*758e9fbaSOystein Eftevaag #include <setjmp.h>
15*758e9fbaSOystein Eftevaag #include <cmocka.h>
16*758e9fbaSOystein Eftevaag 
17*758e9fbaSOystein Eftevaag #include "tss2_tcti.h"
18*758e9fbaSOystein Eftevaag #include "tss2_tctildr.h"
19*758e9fbaSOystein Eftevaag 
20*758e9fbaSOystein Eftevaag #include "tss2-tcti/tctildr.h"
21*758e9fbaSOystein Eftevaag #include "tss2-tcti/tcti-common.h"
22*758e9fbaSOystein Eftevaag 
23*758e9fbaSOystein Eftevaag static char* name_dup = "name_dup";
24*758e9fbaSOystein Eftevaag static char* description_dup = "description_dup";
25*758e9fbaSOystein Eftevaag static char* config_help_dup = "config_help_dup";
26*758e9fbaSOystein Eftevaag 
27*758e9fbaSOystein Eftevaag static TSS2_TCTI_INFO info_src = {
28*758e9fbaSOystein Eftevaag     .version = 1,
29*758e9fbaSOystein Eftevaag     .name = "name",
30*758e9fbaSOystein Eftevaag     .description = "description",
31*758e9fbaSOystein Eftevaag     .config_help = "config_help",
32*758e9fbaSOystein Eftevaag };
33*758e9fbaSOystein Eftevaag static TSS2_TCTI_INFO info_dst = { 0, };
34*758e9fbaSOystein Eftevaag 
35*758e9fbaSOystein Eftevaag char*
36*758e9fbaSOystein Eftevaag __real_strndup (const char *s, size_t n);
37*758e9fbaSOystein Eftevaag char*
__wrap_strndup(const char * s,size_t n)38*758e9fbaSOystein Eftevaag __wrap_strndup (const char *s,
39*758e9fbaSOystein Eftevaag                 size_t n)
40*758e9fbaSOystein Eftevaag {
41*758e9fbaSOystein Eftevaag     if (s == info_src.name || \
42*758e9fbaSOystein Eftevaag         s == info_src.description || \
43*758e9fbaSOystein Eftevaag         s == info_src.config_help)
44*758e9fbaSOystein Eftevaag     {
45*758e9fbaSOystein Eftevaag         printf("%s: got known string\n", __func__);
46*758e9fbaSOystein Eftevaag         errno = mock_type (int);
47*758e9fbaSOystein Eftevaag         return mock_type (char*);
48*758e9fbaSOystein Eftevaag     } else {
49*758e9fbaSOystein Eftevaag         return __real_strndup (s, n);
50*758e9fbaSOystein Eftevaag     }
51*758e9fbaSOystein Eftevaag }
52*758e9fbaSOystein Eftevaag 
53*758e9fbaSOystein Eftevaag void __real_free (void *ptr);
54*758e9fbaSOystein Eftevaag void
__wrap_free(void * ptr)55*758e9fbaSOystein Eftevaag __wrap_free (void *ptr)
56*758e9fbaSOystein Eftevaag {
57*758e9fbaSOystein Eftevaag     printf("%s: %p\n", __func__, ptr);
58*758e9fbaSOystein Eftevaag     if (ptr == name_dup || \
59*758e9fbaSOystein Eftevaag         ptr == description_dup || \
60*758e9fbaSOystein Eftevaag         ptr == config_help_dup || \
61*758e9fbaSOystein Eftevaag         ptr == &info_dst)
62*758e9fbaSOystein Eftevaag     {
63*758e9fbaSOystein Eftevaag         printf("%s: got known memory\n", __func__);
64*758e9fbaSOystein Eftevaag         return;
65*758e9fbaSOystein Eftevaag     } else {
66*758e9fbaSOystein Eftevaag         printf("%s: real free\n", __func__);
67*758e9fbaSOystein Eftevaag         return __real_free (ptr);
68*758e9fbaSOystein Eftevaag     }
69*758e9fbaSOystein Eftevaag }
70*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_tctildr_get_info(const char * name,const TSS2_TCTI_INFO ** info,void ** data)71*758e9fbaSOystein Eftevaag __wrap_tctildr_get_info (const char *name,
72*758e9fbaSOystein Eftevaag                          const TSS2_TCTI_INFO **info,
73*758e9fbaSOystein Eftevaag                          void **data)
74*758e9fbaSOystein Eftevaag {
75*758e9fbaSOystein Eftevaag     TSS2_RC rc = mock_type (TSS2_RC);
76*758e9fbaSOystein Eftevaag     if (rc == TSS2_RC_SUCCESS) {
77*758e9fbaSOystein Eftevaag         *info = mock_type (TSS2_TCTI_INFO*);
78*758e9fbaSOystein Eftevaag         *data = mock_type (void*);
79*758e9fbaSOystein Eftevaag     }
80*758e9fbaSOystein Eftevaag     return rc;
81*758e9fbaSOystein Eftevaag }
82*758e9fbaSOystein Eftevaag 
83*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_tctildr_get_tcti(const char * name,const char * conf,TSS2_TCTI_CONTEXT ** tcti,void ** data)84*758e9fbaSOystein Eftevaag __wrap_tctildr_get_tcti (const char *name,
85*758e9fbaSOystein Eftevaag                   const char* conf,
86*758e9fbaSOystein Eftevaag                   TSS2_TCTI_CONTEXT **tcti,
87*758e9fbaSOystein Eftevaag                   void **data)
88*758e9fbaSOystein Eftevaag {
89*758e9fbaSOystein Eftevaag     TSS2_RC rc = mock_type (TSS2_RC);
90*758e9fbaSOystein Eftevaag     if (rc == TSS2_RC_SUCCESS) {
91*758e9fbaSOystein Eftevaag         *tcti= mock_type (TSS2_TCTI_CONTEXT*);
92*758e9fbaSOystein Eftevaag         *data = mock_type (void*);
93*758e9fbaSOystein Eftevaag     }
94*758e9fbaSOystein Eftevaag     return rc;
95*758e9fbaSOystein Eftevaag }
__wrap_tctildr_finalize_data(void ** data)96*758e9fbaSOystein Eftevaag void __wrap_tctildr_finalize_data (void **data) {}
97*758e9fbaSOystein Eftevaag 
98*758e9fbaSOystein Eftevaag static void
copyinfo_null_params(void ** state)99*758e9fbaSOystein Eftevaag copyinfo_null_params (void **state)
100*758e9fbaSOystein Eftevaag {
101*758e9fbaSOystein Eftevaag     TSS2_RC rc = copy_info (NULL, NULL);
102*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
103*758e9fbaSOystein Eftevaag }
104*758e9fbaSOystein Eftevaag static void
copyinfo_strndup1_fail(void ** state)105*758e9fbaSOystein Eftevaag copyinfo_strndup1_fail (void **state)
106*758e9fbaSOystein Eftevaag {
107*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO info_dst = { 0, };
108*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, ENOMEM);
109*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, NULL);
110*758e9fbaSOystein Eftevaag     TSS2_RC rc = copy_info (&info_src, &info_dst);
111*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_TCTI_RC_GENERAL_FAILURE);
112*758e9fbaSOystein Eftevaag }
113*758e9fbaSOystein Eftevaag static void
copyinfo_strndup2_fail(void ** state)114*758e9fbaSOystein Eftevaag copyinfo_strndup2_fail (void **state)
115*758e9fbaSOystein Eftevaag {
116*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO info_dst = { 0, };
117*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
118*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, name_dup);
119*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, ENOMEM);
120*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, NULL);
121*758e9fbaSOystein Eftevaag     TSS2_RC rc = copy_info (&info_src, &info_dst);
122*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_TCTI_RC_GENERAL_FAILURE);
123*758e9fbaSOystein Eftevaag }
124*758e9fbaSOystein Eftevaag static void
copyinfo_strndup3_fail(void ** state)125*758e9fbaSOystein Eftevaag copyinfo_strndup3_fail (void **state)
126*758e9fbaSOystein Eftevaag {
127*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO info_dst = { 0, };
128*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
129*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, name_dup);
130*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
131*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, description_dup);
132*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, ENOMEM);
133*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, NULL);
134*758e9fbaSOystein Eftevaag     TSS2_RC rc = copy_info (&info_src, &info_dst);
135*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_TCTI_RC_GENERAL_FAILURE);
136*758e9fbaSOystein Eftevaag }
137*758e9fbaSOystein Eftevaag static void
copyinfo_success(void ** state)138*758e9fbaSOystein Eftevaag copyinfo_success (void **state)
139*758e9fbaSOystein Eftevaag {
140*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO info_dst = { 0, };
141*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
142*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, name_dup);
143*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
144*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, description_dup);
145*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
146*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, config_help_dup);
147*758e9fbaSOystein Eftevaag     TSS2_RC rc = copy_info (&info_src, &info_dst);
148*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_RC_SUCCESS);
149*758e9fbaSOystein Eftevaag     assert_string_equal (info_dst.name, name_dup);
150*758e9fbaSOystein Eftevaag     assert_string_equal (info_dst.description, description_dup);
151*758e9fbaSOystein Eftevaag     assert_string_equal (info_dst.config_help, config_help_dup);
152*758e9fbaSOystein Eftevaag }
153*758e9fbaSOystein Eftevaag static void
getinfo_null_info(void ** state)154*758e9fbaSOystein Eftevaag getinfo_null_info (void **state)
155*758e9fbaSOystein Eftevaag {
156*758e9fbaSOystein Eftevaag     TSS2_RC rc = Tss2_TctiLdr_GetInfo (NULL, NULL);
157*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_TCTI_RC_BAD_REFERENCE);
158*758e9fbaSOystein Eftevaag }
159*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_handle_from_name(const char * file,void ** handle)160*758e9fbaSOystein Eftevaag __wrap_handle_from_name(const char *file,
161*758e9fbaSOystein Eftevaag                         void **handle)
162*758e9fbaSOystein Eftevaag {
163*758e9fbaSOystein Eftevaag     printf ("%s\n", __func__);
164*758e9fbaSOystein Eftevaag     *handle = mock_type (void*);
165*758e9fbaSOystein Eftevaag     return mock_type (TSS2_RC);
166*758e9fbaSOystein Eftevaag }
167*758e9fbaSOystein Eftevaag const TSS2_TCTI_INFO*
__wrap_info_from_handle(void * dlhandle)168*758e9fbaSOystein Eftevaag __wrap_info_from_handle (void *dlhandle)
169*758e9fbaSOystein Eftevaag {
170*758e9fbaSOystein Eftevaag     printf ("%s\n", __func__);
171*758e9fbaSOystein Eftevaag     return mock_type (const TSS2_TCTI_INFO*);
172*758e9fbaSOystein Eftevaag }
173*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_get_tcti_default(TSS2_TCTI_CONTEXT ** tcticontext,void ** dlhandle)174*758e9fbaSOystein Eftevaag __wrap_get_tcti_default(TSS2_TCTI_CONTEXT ** tcticontext, void **dlhandle)
175*758e9fbaSOystein Eftevaag {
176*758e9fbaSOystein Eftevaag     printf ("%s\n", __func__);
177*758e9fbaSOystein Eftevaag     return TSS2_RC_SUCCESS;
178*758e9fbaSOystein Eftevaag }
179*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_tcti_from_file(const char * file,const char * conf,TSS2_TCTI_CONTEXT ** tcti,void ** dlhandle)180*758e9fbaSOystein Eftevaag __wrap_tcti_from_file(const char *file,
181*758e9fbaSOystein Eftevaag                const char* conf,
182*758e9fbaSOystein Eftevaag                TSS2_TCTI_CONTEXT **tcti,
183*758e9fbaSOystein Eftevaag                void **dlhandle)
184*758e9fbaSOystein Eftevaag {
185*758e9fbaSOystein Eftevaag     printf ("%s\n", __func__);
186*758e9fbaSOystein Eftevaag     return TSS2_RC_SUCCESS;
187*758e9fbaSOystein Eftevaag }
188*758e9fbaSOystein Eftevaag #define TEST_HANDLE (void*)666
189*758e9fbaSOystein Eftevaag #define HANDLE_FROM_NAME_FAIL_RC (TSS2_RC)574567392
190*758e9fbaSOystein Eftevaag void
__wrap_dlclose(void * handle)191*758e9fbaSOystein Eftevaag __wrap_dlclose (void *handle)
192*758e9fbaSOystein Eftevaag {
193*758e9fbaSOystein Eftevaag     if (handle == TEST_HANDLE) {
194*758e9fbaSOystein Eftevaag         printf ("%s got TEST_HANDLE\n", __func__);
195*758e9fbaSOystein Eftevaag         return;
196*758e9fbaSOystein Eftevaag     } else {
197*758e9fbaSOystein Eftevaag         printf ("%s got unexpected handle\n", __func__);
198*758e9fbaSOystein Eftevaag         return;
199*758e9fbaSOystein Eftevaag     }
200*758e9fbaSOystein Eftevaag }
201*758e9fbaSOystein Eftevaag TSS2_RC
__wrap_get_info_default(TSS2_TCTI_INFO ** info,void ** dlhandle)202*758e9fbaSOystein Eftevaag __wrap_get_info_default (TSS2_TCTI_INFO **info,
203*758e9fbaSOystein Eftevaag                          void **dlhandle)
204*758e9fbaSOystein Eftevaag {
205*758e9fbaSOystein Eftevaag     printf ("%s\n", __func__);
206*758e9fbaSOystein Eftevaag     if (*info == &info_src) {
207*758e9fbaSOystein Eftevaag         *dlhandle = mock_type (void*);
208*758e9fbaSOystein Eftevaag         return mock_type (TSS2_RC);
209*758e9fbaSOystein Eftevaag     } else {
210*758e9fbaSOystein Eftevaag         printf ("%s: this shouldn't happen", __func__);
211*758e9fbaSOystein Eftevaag         assert_true(1);
212*758e9fbaSOystein Eftevaag         return 1;
213*758e9fbaSOystein Eftevaag     }
214*758e9fbaSOystein Eftevaag }
215*758e9fbaSOystein Eftevaag #define TCTI_NAME "foo"
216*758e9fbaSOystein Eftevaag static void
getinfo_get_info_fail(void ** state)217*758e9fbaSOystein Eftevaag getinfo_get_info_fail (void **state)
218*758e9fbaSOystein Eftevaag {
219*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO *info = NULL;
220*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, HANDLE_FROM_NAME_FAIL_RC);
221*758e9fbaSOystein Eftevaag     TSS2_RC rc = Tss2_TctiLdr_GetInfo (TCTI_NAME, &info);
222*758e9fbaSOystein Eftevaag     assert_int_equal (rc, HANDLE_FROM_NAME_FAIL_RC);
223*758e9fbaSOystein Eftevaag }
224*758e9fbaSOystein Eftevaag void*
__wrap_calloc(size_t nmemb,size_t size)225*758e9fbaSOystein Eftevaag __wrap_calloc(size_t nmemb, size_t size)
226*758e9fbaSOystein Eftevaag {
227*758e9fbaSOystein Eftevaag     printf("%s\n", __func__);
228*758e9fbaSOystein Eftevaag     return mock_type (void*);
229*758e9fbaSOystein Eftevaag }
230*758e9fbaSOystein Eftevaag #define TEST_DATA (void*)0xabcdef999
231*758e9fbaSOystein Eftevaag static void
getinfo_calloc_fail(void ** state)232*758e9fbaSOystein Eftevaag getinfo_calloc_fail (void **state)
233*758e9fbaSOystein Eftevaag {
234*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO *info = NULL;
235*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, TSS2_RC_SUCCESS);
236*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, &info_src);
237*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, TEST_DATA);
238*758e9fbaSOystein Eftevaag     will_return (__wrap_calloc, NULL);
239*758e9fbaSOystein Eftevaag     TSS2_RC rc = Tss2_TctiLdr_GetInfo (TCTI_NAME, &info);
240*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_TCTI_RC_GENERAL_FAILURE);
241*758e9fbaSOystein Eftevaag }
242*758e9fbaSOystein Eftevaag static void
getinfo_copy_info_fail(void ** state)243*758e9fbaSOystein Eftevaag getinfo_copy_info_fail (void **state)
244*758e9fbaSOystein Eftevaag {
245*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO *info = NULL;
246*758e9fbaSOystein Eftevaag     printf ("%s: pointer %p\n", __func__, &info_dst);
247*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, TSS2_RC_SUCCESS);
248*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, &info_src);
249*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, TEST_DATA);
250*758e9fbaSOystein Eftevaag     will_return (__wrap_calloc, &info_dst);
251*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, ENOMEM);
252*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, NULL);
253*758e9fbaSOystein Eftevaag     TSS2_RC rc = Tss2_TctiLdr_GetInfo (TCTI_NAME, &info);
254*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_TCTI_RC_GENERAL_FAILURE);
255*758e9fbaSOystein Eftevaag }
256*758e9fbaSOystein Eftevaag static void
getinfo_success(void ** state)257*758e9fbaSOystein Eftevaag getinfo_success (void **state)
258*758e9fbaSOystein Eftevaag {
259*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO *info = NULL;
260*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, TSS2_RC_SUCCESS);
261*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, &info_src);
262*758e9fbaSOystein Eftevaag     will_return (__wrap_tctildr_get_info, TEST_DATA);
263*758e9fbaSOystein Eftevaag     will_return (__wrap_calloc, &info_dst);
264*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
265*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, name_dup);
266*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
267*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, description_dup);
268*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, 0);
269*758e9fbaSOystein Eftevaag     will_return (__wrap_strndup, config_help_dup);
270*758e9fbaSOystein Eftevaag     TSS2_RC rc = Tss2_TctiLdr_GetInfo (TCTI_NAME, &info);
271*758e9fbaSOystein Eftevaag     assert_int_equal (rc, TSS2_RC_SUCCESS);
272*758e9fbaSOystein Eftevaag }
273*758e9fbaSOystein Eftevaag static void
freeinfo_null(void ** state)274*758e9fbaSOystein Eftevaag freeinfo_null (void **state)
275*758e9fbaSOystein Eftevaag {
276*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO *info = NULL;
277*758e9fbaSOystein Eftevaag     Tss2_TctiLdr_FreeInfo (&info);
278*758e9fbaSOystein Eftevaag     assert_null (info);
279*758e9fbaSOystein Eftevaag }
280*758e9fbaSOystein Eftevaag static void
freeinfo_success(void ** state)281*758e9fbaSOystein Eftevaag freeinfo_success (void **state)
282*758e9fbaSOystein Eftevaag {
283*758e9fbaSOystein Eftevaag     TSS2_TCTI_INFO *info = &info_dst;
284*758e9fbaSOystein Eftevaag     Tss2_TctiLdr_FreeInfo (&info);
285*758e9fbaSOystein Eftevaag     assert_null (info);
286*758e9fbaSOystein Eftevaag }
287*758e9fbaSOystein Eftevaag int
main(int argc,char * arvg[])288*758e9fbaSOystein Eftevaag main (int argc, char* arvg[])
289*758e9fbaSOystein Eftevaag {
290*758e9fbaSOystein Eftevaag     const struct CMUnitTest tests[] = {
291*758e9fbaSOystein Eftevaag         cmocka_unit_test (copyinfo_null_params),
292*758e9fbaSOystein Eftevaag         cmocka_unit_test (copyinfo_strndup1_fail),
293*758e9fbaSOystein Eftevaag         cmocka_unit_test (copyinfo_strndup2_fail),
294*758e9fbaSOystein Eftevaag         cmocka_unit_test (copyinfo_strndup3_fail),
295*758e9fbaSOystein Eftevaag         cmocka_unit_test (copyinfo_success),
296*758e9fbaSOystein Eftevaag         cmocka_unit_test (getinfo_null_info),
297*758e9fbaSOystein Eftevaag         cmocka_unit_test (getinfo_get_info_fail),
298*758e9fbaSOystein Eftevaag         cmocka_unit_test (getinfo_calloc_fail),
299*758e9fbaSOystein Eftevaag         cmocka_unit_test (getinfo_copy_info_fail),
300*758e9fbaSOystein Eftevaag         cmocka_unit_test (getinfo_success),
301*758e9fbaSOystein Eftevaag         cmocka_unit_test (freeinfo_null),
302*758e9fbaSOystein Eftevaag         cmocka_unit_test (freeinfo_success),
303*758e9fbaSOystein Eftevaag     };
304*758e9fbaSOystein Eftevaag     return cmocka_run_group_tests (tests, NULL, NULL);
305*758e9fbaSOystein Eftevaag }
306