2 * Copyright 2007 Hans Leidekker
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include <wine/test.h>
26 static INT (WINAPI *pSnmpUtilAsnAnyCpy)(AsnAny*, AsnAny*);
27 static VOID (WINAPI *pSnmpUtilAsnAnyFree)(AsnAny*);
28 static INT (WINAPI *pSnmpUtilOctetsCmp)(AsnOctetString*, AsnOctetString*);
29 static INT (WINAPI *pSnmpUtilOctetsCpy)(AsnOctetString*, AsnOctetString*);
30 static VOID (WINAPI *pSnmpUtilOctetsFree)(AsnOctetString*);
31 static INT (WINAPI *pSnmpUtilOctetsNCmp)(AsnOctetString*, AsnOctetString*, UINT);
33 static void InitFunctionPtrs(void)
35 HMODULE hSnmpapi = GetModuleHandle("snmpapi.dll");
37 #define SNMPAPI_GET_PROC(func) \
38 p ## func = (void*)GetProcAddress(hSnmpapi, #func); \
40 trace("GetProcAddress(%s) failed\n", #func);
42 SNMPAPI_GET_PROC(SnmpUtilAsnAnyCpy)
43 SNMPAPI_GET_PROC(SnmpUtilAsnAnyFree)
44 SNMPAPI_GET_PROC(SnmpUtilOctetsCmp)
45 SNMPAPI_GET_PROC(SnmpUtilOctetsCpy)
46 SNMPAPI_GET_PROC(SnmpUtilOctetsFree)
47 SNMPAPI_GET_PROC(SnmpUtilOctetsNCmp)
49 #undef SNMPAPI_GET_PROC
52 static void test_SnmpUtilOidToA(void)
55 static UINT ids1[] = { 1,3,6,1,4,1,311 };
56 static UINT ids2[] = {
57 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
58 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
59 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
60 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
61 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
62 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
63 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
64 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
65 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
66 static UINT ids3[] = { 0xffffffff };
67 static AsnObjectIdentifier oid0 = { 0, ids1 };
68 static AsnObjectIdentifier oid1 = { 7, ids1 };
69 static AsnObjectIdentifier oid2 = { 256, ids2 };
70 static AsnObjectIdentifier oid3 = { 257, ids2 };
71 static AsnObjectIdentifier oid4 = { 258, ids2 };
72 static AsnObjectIdentifier oid5 = { 1, ids3 };
73 static const char expect0[] = "<null oid>";
74 static const char expect1[] = "1.3.6.1.4.1.311";
75 static const char expect2[] =
76 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
77 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
78 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
79 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
80 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
81 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
82 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
83 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1";
84 static const char expect3[] =
85 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
86 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
87 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
88 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
89 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
90 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
91 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1."
92 "1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1";
93 static const char expect4[] = "-1";
95 ret = SnmpUtilOidToA(NULL);
96 ok(ret != NULL, "SnmpUtilOidToA failed\n");
97 ok(!strcmp(ret, expect0), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
100 ret = SnmpUtilOidToA(&oid0);
101 ok(ret != NULL, "SnmpUtilOidToA failed\n");
102 ok(!strcmp(ret, expect0), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
105 ret = SnmpUtilOidToA(&oid1);
106 ok(ret != NULL, "SnmpUtilOidToA failed\n");
107 ok(!strcmp(ret, expect1), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
110 ret = SnmpUtilOidToA(&oid2);
111 ok(ret != NULL, "SnmpUtilOidToA failed\n");
112 ok(!strcmp(ret, expect2), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
115 ret = SnmpUtilOidToA(&oid3);
116 ok(ret != NULL, "SnmpUtilOidToA failed\n");
117 ok(!strcmp(ret, expect3), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
120 ret = SnmpUtilOidToA(&oid4);
121 ok(ret != NULL, "SnmpUtilOidToA failed\n");
122 ok(!strcmp(ret, expect3), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
125 ret = SnmpUtilOidToA(&oid5);
126 ok(ret != NULL, "SnmpUtilOidToA failed\n");
127 ok(!strcmp(ret, expect4), "SnmpUtilOidToA failed got \n%s\n expected \n%s\n",
131 static void test_SnmpUtilAsnAnyCpyFree(void)
134 static AsnAny dst, src = { ASN_INTEGER, { 1 } };
136 if (0) { /* these crash on XP */
137 ret = pSnmpUtilAsnAnyCpy(NULL, NULL);
138 ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
140 ret = pSnmpUtilAsnAnyCpy(&dst, NULL);
141 ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
143 ret = pSnmpUtilAsnAnyCpy(NULL, &src);
144 ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
147 ret = pSnmpUtilAsnAnyCpy(&dst, &src);
148 ok(ret, "SnmpUtilAsnAnyCpy failed\n");
149 ok(!memcmp(&src, &dst, sizeof(AsnAny)), "SnmpUtilAsnAnyCpy failed\n");
151 if (0) { /* crashes on XP */
152 pSnmpUtilAsnAnyFree(NULL);
154 pSnmpUtilAsnAnyFree(&dst);
155 ok(dst.asnType == ASN_NULL, "SnmpUtilAsnAnyFree failed\n");
156 ok(dst.asnValue.number == 1, "SnmpUtilAsnAnyFree failed\n");
159 static void test_SnmpUtilOctetsCpyFree(void)
162 static BYTE stream[] = { '1', '2', '3', '4' };
163 static AsnOctetString dst, src = { stream, 4, TRUE };
165 ret = pSnmpUtilOctetsCpy(NULL, NULL);
166 ok(!ret, "SnmpUtilOctetsCpy succeeded\n");
168 memset(&dst, 1, sizeof(AsnOctetString));
169 ret = pSnmpUtilOctetsCpy(&dst, NULL);
170 ok(ret, "SnmpUtilOctetsCpy failed\n");
171 ok(dst.length == 0, "SnmpUtilOctetsCpy failed\n");
172 ok(dst.stream == NULL, "SnmpUtilOctetsCpy failed\n");
173 ok(dst.dynamic == FALSE, "SnmpUtilOctetsCpy failed\n");
175 ret = pSnmpUtilOctetsCpy(NULL, &src);
176 ok(!ret, "SnmpUtilOctetsCpy succeeded\n");
178 memset(&dst, 0, sizeof(AsnOctetString));
179 ret = pSnmpUtilOctetsCpy(&dst, &src);
180 ok(ret, "SnmpUtilOctetsCpy failed\n");
181 ok(src.length == dst.length, "SnmpUtilOctetsCpy failed\n");
182 ok(!memcmp(src.stream, dst.stream, dst.length), "SnmpUtilOctetsCpy failed\n");
183 ok(dst.dynamic == TRUE, "SnmpUtilOctetsCpy failed\n");
185 pSnmpUtilOctetsFree(NULL);
186 pSnmpUtilOctetsFree(&dst);
187 ok(dst.stream == NULL, "SnmpUtilOctetsFree failed\n");
188 ok(dst.length == 0, "SnmpUtilOctetsFree failed\n");
189 ok(dst.dynamic == FALSE, "SnmpUtilOctetsFree failed\n");
192 static void test_SnmpUtilOidCpyFree(void)
195 static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 };
196 static AsnObjectIdentifier dst, src = { sizeof(ids) / sizeof(ids[0]), ids };
198 ret = SnmpUtilOidCpy(NULL, NULL);
199 ok(!ret, "SnmpUtilOidCpy succeeded\n");
201 memset(&dst, 1, sizeof(AsnObjectIdentifier));
202 ret = SnmpUtilOidCpy(&dst, NULL);
203 ok(ret, "SnmpUtilOidCpy failed\n");
204 ok(dst.idLength == 0, "SnmpUtilOidCpy failed\n");
205 ok(dst.ids == NULL, "SnmpUtilOidCpy failed\n");
207 ret = SnmpUtilOidCpy(NULL, &src);
208 ok(!ret, "SnmpUtilOidCpy succeeded\n");
210 memset(&dst, 0, sizeof(AsnObjectIdentifier));
211 ret = SnmpUtilOidCpy(&dst, &src);
212 ok(ret, "SnmpUtilOidCpy failed\n");
213 ok(src.idLength == dst.idLength, "SnmpUtilOidCpy failed\n");
214 ok(!memcmp(src.ids, dst.ids, dst.idLength * sizeof(UINT)), "SnmpUtilOidCpy failed\n");
216 SnmpUtilOidFree(NULL);
217 SnmpUtilOidFree(&dst);
218 ok(dst.idLength == 0, "SnmpUtilOidFree failed\n");
219 ok(dst.ids == NULL, "SnmpUtilOidFree failed\n");
222 static void test_SnmpUtilOctetsNCmp(void)
225 static BYTE stream1[] = { '1', '2', '3', '4' };
226 static BYTE stream2[] = { '5', '6', '7', '8' };
227 static AsnOctetString octets1 = { stream1, 4, FALSE };
228 static AsnOctetString octets2 = { stream2, 4, FALSE };
230 ret = pSnmpUtilOctetsNCmp(NULL, NULL, 0);
231 ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
233 ret = pSnmpUtilOctetsNCmp(NULL, NULL, 1);
234 ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
236 ret = pSnmpUtilOctetsNCmp(&octets1, NULL, 0);
237 ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
239 ret = pSnmpUtilOctetsNCmp(&octets1, NULL, 1);
240 ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
242 ret = pSnmpUtilOctetsNCmp(NULL, &octets2, 0);
243 ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
245 ret = pSnmpUtilOctetsNCmp(NULL, &octets2, 1);
246 ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
248 ret = pSnmpUtilOctetsNCmp(&octets1, &octets1, 0);
249 ok(!ret, "SnmpUtilOctetsNCmp failed\n");
251 ret = pSnmpUtilOctetsNCmp(&octets1, &octets1, 4);
252 ok(!ret, "SnmpUtilOctetsNCmp failed\n");
254 ret = pSnmpUtilOctetsNCmp(&octets1, &octets2, 4);
255 ok(ret == -4, "SnmpUtilOctetsNCmp failed\n");
257 ret = pSnmpUtilOctetsNCmp(&octets2, &octets1, 4);
258 ok(ret == 4, "SnmpUtilOctetsNCmp failed\n");
261 static void test_SnmpUtilOctetsCmp(void)
264 static BYTE stream1[] = { '1', '2', '3' };
265 static BYTE stream2[] = { '1', '2', '3', '4' };
266 static AsnOctetString octets1 = { stream1, 3, FALSE };
267 static AsnOctetString octets2 = { stream2, 4, FALSE };
269 if (0) { /* these crash on XP */
270 ret = pSnmpUtilOctetsCmp(NULL, NULL);
271 ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
273 ret = pSnmpUtilOctetsCmp(&octets1, NULL);
274 ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
276 ret = pSnmpUtilOctetsCmp(NULL, &octets2);
277 ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
280 ret = pSnmpUtilOctetsCmp(&octets2, &octets1);
281 ok(ret == 1, "SnmpUtilOctetsCmp failed\n");
283 ret = pSnmpUtilOctetsCmp(&octets1, &octets2);
284 ok(ret == -1, "SnmpUtilOctetsCmp failed\n");
287 static void test_SnmpUtilOidNCmp(void)
290 static UINT ids1[] = { 1, 2, 3, 4 };
291 static UINT ids2[] = { 5, 6, 7, 8 };
292 static AsnObjectIdentifier oid1 = { 4, ids1 };
293 static AsnObjectIdentifier oid2 = { 4, ids2 };
295 ret = SnmpUtilOidNCmp(NULL, NULL, 0);
296 ok(!ret, "SnmpUtilOidNCmp succeeded\n");
298 ret = SnmpUtilOidNCmp(NULL, NULL, 1);
299 ok(!ret, "SnmpUtilOidNCmp succeeded\n");
301 ret = SnmpUtilOidNCmp(&oid1, NULL, 0);
302 ok(!ret, "SnmpUtilOidNCmp succeeded\n");
304 ret = SnmpUtilOidNCmp(&oid1, NULL, 1);
305 ok(!ret, "SnmpUtilOidNCmp succeeded\n");
307 ret = SnmpUtilOidNCmp(NULL, &oid2, 0);
308 ok(!ret, "SnmpUtilOidNCmp succeeded\n");
310 ret = SnmpUtilOidNCmp(NULL, &oid2, 1);
311 ok(!ret, "SnmpUtilOidNCmp succeeded\n");
313 ret = SnmpUtilOidNCmp(&oid1, &oid1, 0);
314 ok(!ret, "SnmpUtilOidNCmp failed\n");
316 ret = SnmpUtilOidNCmp(&oid1, &oid1, 4);
317 ok(!ret, "SnmpUtilOidNCmp failed\n");
319 ret = SnmpUtilOidNCmp(&oid1, &oid2, 4);
320 ok(ret == -1, "SnmpUtilOidNCmp failed: %d\n", ret);
322 ret = SnmpUtilOidNCmp(&oid2, &oid1, 4);
323 ok(ret == 1, "SnmpUtilOidNCmp failed: %d\n", ret);
326 static void test_SnmpUtilOidCmp(void)
329 static UINT ids1[] = { 1, 2, 3 };
330 static UINT ids2[] = { 1, 2, 3, 4 };
331 static AsnObjectIdentifier oid1 = { 3, ids1 };
332 static AsnObjectIdentifier oid2 = { 4, ids2 };
334 if (0) { /* these crash on XP */
335 ret = SnmpUtilOidCmp(NULL, NULL);
336 ok(!ret, "SnmpUtilOidCmp succeeded\n");
338 ret = SnmpUtilOidCmp(&oid1, NULL);
339 ok(!ret, "SnmpUtilOidCmp succeeded\n");
341 ret = SnmpUtilOidCmp(NULL, &oid2);
342 ok(!ret, "SnmpUtilOidCmp succeeded\n");
345 ret = SnmpUtilOidCmp(&oid2, &oid1);
346 ok(ret == 1, "SnmpUtilOidCmp failed\n");
348 ret = SnmpUtilOidCmp(&oid1, &oid2);
349 ok(ret == -1, "SnmpUtilOidCmp failed\n");
352 static void test_SnmpUtilOidAppend(void)
355 static UINT ids1[] = { 1, 2, 3 };
356 static UINT ids2[] = { 4, 5, 6 };
357 static AsnObjectIdentifier oid1 = { 3, ids1 };
358 static AsnObjectIdentifier oid2 = { 3, ids2 };
360 ret = SnmpUtilOidAppend(NULL, NULL);
361 ok(!ret, "SnmpUtilOidAppend succeeded\n");
363 ret = SnmpUtilOidAppend(&oid1, NULL);
364 ok(ret, "SnmpUtilOidAppend failed\n");
366 ret = SnmpUtilOidAppend(NULL, &oid2);
367 ok(!ret, "SnmpUtilOidAppend succeeded\n");
369 ret = SnmpUtilOidAppend(&oid1, &oid2);
370 ok(ret, "SnmpUtilOidAppend failed\n");
371 ok(oid1.idLength == 6, "SnmpUtilOidAppend failed\n");
372 ok(!memcmp(&oid1.ids[3], ids2, 3 * sizeof(UINT)),
373 "SnmpUtilOidAppend failed\n");
376 static void test_SnmpUtilVarBindCpyFree(void)
379 static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 };
380 static SnmpVarBind dst, src = { { 7, ids }, { ASN_INTEGER, { 1 } } };
382 ret = SnmpUtilVarBindCpy(NULL, NULL);
383 ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
385 memset(&dst, 0, sizeof(SnmpVarBind));
386 ret = SnmpUtilVarBindCpy(&dst, NULL);
387 ok(ret, "SnmpUtilVarBindCpy failed\n");
388 ok(dst.name.idLength == 0, "SnmpUtilVarBindCpy failed\n");
389 ok(dst.name.ids == NULL, "SnmpUtilVarBindCpy failed\n");
390 ok(dst.value.asnType == ASN_NULL, "SnmpUtilVarBindCpy failed\n");
391 ok(dst.value.asnValue.number == 0, "SnmpUtilVarBindCpy failed\n");
393 ret = SnmpUtilVarBindCpy(NULL, &src);
394 ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
396 memset(&dst, 0, sizeof(SnmpVarBind));
397 ret = SnmpUtilVarBindCpy(&dst, &src);
398 ok(ret, "SnmpUtilVarBindCpy failed\n");
399 ok(src.name.idLength == dst.name.idLength, "SnmpUtilVarBindCpy failed\n");
400 ok(!memcmp(src.name.ids, dst.name.ids, dst.name.idLength * sizeof(UINT)),
401 "SnmpUtilVarBindCpy failed\n");
402 ok(!memcmp(&src.value, &dst.value, sizeof(AsnObjectSyntax)),
403 "SnmpUtilVarBindCpy failed\n");
405 SnmpUtilVarBindFree(NULL);
406 SnmpUtilVarBindFree(&dst);
407 ok(dst.name.idLength == 0, "SnmpUtilVarBindFree failed\n");
408 ok(dst.name.ids == NULL, "SnmpUtilVarBindFree failed\n");
409 ok(dst.value.asnType == ASN_NULL, "SnmpUtilVarBindFree failed\n");
410 ok(dst.value.asnValue.number == 1, "SnmpUtilVarBindFree failed\n");
413 static void test_SnmpUtilVarBindListCpyFree(void)
416 static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 };
417 static SnmpVarBind src = { { 7, ids }, { ASN_INTEGER, { 1 } } };
418 static SnmpVarBindList dst_list, src_list = { &src, 1 };
420 if (0) { /* these crash on XP */
421 ret = SnmpUtilVarBindListCpy(NULL, NULL);
422 ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
424 ret = SnmpUtilVarBindListCpy(NULL, &src_list);
425 ok(!ret, "SnmpUtilVarBindListCpy succeeded\n");
428 memset(&dst_list, 0xff, sizeof(SnmpVarBindList));
429 ret = SnmpUtilVarBindListCpy(&dst_list, NULL);
430 ok(ret, "SnmpUtilVarBindListCpy failed\n");
431 ok(dst_list.list == NULL, "SnmpUtilVarBindListCpy failed\n");
432 ok(dst_list.len == 0, "SnmpUtilVarBindListCpy failed\n");
434 ret = SnmpUtilVarBindListCpy(&dst_list, &src_list);
435 ok(ret, "SnmpUtilVarBindListCpy failed\n");
436 ok(src_list.len == dst_list.len, "SnmpUtilVarBindListCpy failed\n");
437 ok(src_list.list->name.idLength == dst_list.list->name.idLength,
438 "SnmpUtilVarBindListCpy failed\n");
439 ok(!memcmp(src_list.list->name.ids, dst_list.list->name.ids,
440 dst_list.list->name.idLength * sizeof(UINT)),
441 "SnmpUtilVarBindListCpy failed\n");
442 ok(!memcmp(&src_list.list->value, &dst_list.list->value, sizeof(AsnAny)),
443 "SnmpUtilVarBindListCpy failed\n");
445 if (0) { /* crashes on XP */
446 SnmpUtilVarBindListFree(NULL);
448 SnmpUtilVarBindListFree(&dst_list);
449 ok(dst_list.list == NULL, "SnmpUtilVarBindListFree failed\n");
450 ok(dst_list.len == 0, "SnmpUtilVarBindListFree failed\n");
457 test_SnmpUtilOidToA();
459 if (!pSnmpUtilAsnAnyCpy || !pSnmpUtilAsnAnyFree)
460 skip("SnmpUtilAsnAnyCpy and/or SnmpUtilAsnAnyFree not available\n");
462 test_SnmpUtilAsnAnyCpyFree();
464 if (!pSnmpUtilOctetsCpy || !pSnmpUtilOctetsFree)
465 skip("SnmpUtilOctetsCpy and/or SnmpUtilOctetsFree not available\n");
467 test_SnmpUtilOctetsCpyFree();
469 test_SnmpUtilOidCpyFree();
471 if (!pSnmpUtilOctetsNCmp)
472 skip("SnmpUtilOctetsNCmp not available\n");
474 test_SnmpUtilOctetsNCmp();
476 if (!pSnmpUtilOctetsCmp)
477 skip("SnmpUtilOctetsCmp not available\n");
479 test_SnmpUtilOctetsCmp();
481 test_SnmpUtilOidCmp();
482 test_SnmpUtilOidNCmp();
483 test_SnmpUtilOidAppend();
484 test_SnmpUtilVarBindCpyFree();
485 test_SnmpUtilVarBindListCpyFree();