Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580/* * Copyright 2007 Hans Leidekker * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
#include <stdio.h>
#include <wine/test.h>
#include <windef.h>#include <snmp.h>
static INT (WINAPI *pSnmpUtilAsnAnyCpy)(AsnAny*, AsnAny*);static VOID (WINAPI *pSnmpUtilAsnAnyFree)(AsnAny*);static INT (WINAPI *pSnmpUtilOctetsCmp)(AsnOctetString*, AsnOctetString*);static INT (WINAPI *pSnmpUtilOctetsCpy)(AsnOctetString*, AsnOctetString*);static VOID (WINAPI *pSnmpUtilOctetsFree)(AsnOctetString*);static INT (WINAPI *pSnmpUtilOctetsNCmp)(AsnOctetString*, AsnOctetString*, UINT);
static void InitFunctionPtrs(void){ HMODULE hSnmpapi = GetModuleHandleA("snmpapi.dll");
#define SNMPAPI_GET_PROC(func) \ p ## func = (void*)GetProcAddress(hSnmpapi, #func); \ if(!p ## func) \ trace("GetProcAddress(%s) failed\n", #func);
SNMPAPI_GET_PROC(SnmpUtilAsnAnyCpy) SNMPAPI_GET_PROC(SnmpUtilAsnAnyFree) SNMPAPI_GET_PROC(SnmpUtilOctetsCmp) SNMPAPI_GET_PROC(SnmpUtilOctetsCpy) SNMPAPI_GET_PROC(SnmpUtilOctetsFree) SNMPAPI_GET_PROC(SnmpUtilOctetsNCmp)
#undef SNMPAPI_GET_PROC}
static void test_SnmpUtilOidToA(void){ LPSTR ret; static UINT ids1[] = { 1,3,6,1,4,1,311 }; static UINT ids2[] = { 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,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,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,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,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,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,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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }; static UINT ids3[] = { 0xffffffff }; static AsnObjectIdentifier oid0 = { 0, ids1 }; static AsnObjectIdentifier oid1 = { 7, ids1 }; static AsnObjectIdentifier oid2 = { 256, ids2 }; static AsnObjectIdentifier oid3 = { 257, ids2 }; static AsnObjectIdentifier oid4 = { 258, ids2 }; static AsnObjectIdentifier oid5 = { 1, ids3 }; static const char expect0[] = "<null oid>"; static const char expect0_alt[] = "NUL"; static const char expect1[] = "1.3.6.1.4.1.311"; static const char expect2[] = "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.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.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.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.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.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.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.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1"; static const char expect3[] = "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.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.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.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.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.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.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.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1"; static const char expect3_alt[] = "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.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.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.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.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.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.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.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1"; static const char expect4[] = "-1";
/* This crashes under win98 */ if(0) { ret = SnmpUtilOidToA(NULL); ok(ret != NULL, "SnmpUtilOidToA failed\n"); ok(!strcmp(ret, expect0), "SnmpUtilOidToA failed got\n%s\n expected\n%s\n", ret, expect1); }
ret = SnmpUtilOidToA(&oid0); ok(ret != NULL, "SnmpUtilOidToA failed\n"); ok(!strcmp(ret, expect0) || broken(!strcmp(ret, expect0_alt)), /* Win98, WinMe, NT4 */ "SnmpUtilOidToA failed got\n%s\n expected\n%s\n", ret, expect0);
ret = SnmpUtilOidToA(&oid1); ok(ret != NULL, "SnmpUtilOidToA failed\n"); ok(!strcmp(ret, expect1), "SnmpUtilOidToA failed got\n%s\n expected\n%s\n", ret, expect1);
ret = SnmpUtilOidToA(&oid2); ok(ret != NULL, "SnmpUtilOidToA failed\n"); ok(!strcmp(ret, expect2), "SnmpUtilOidToA failed got\n%s\n expected\n%s\n", ret, expect2);
ret = SnmpUtilOidToA(&oid3); ok(ret != NULL, "SnmpUtilOidToA failed\n"); ok(!strcmp(ret, expect3), "SnmpUtilOidToA failed got\n%s\n expected\n%s\n", ret, expect3);
ret = SnmpUtilOidToA(&oid4); ok(ret != NULL, "SnmpUtilOidToA failed\n"); ok(!strcmp(ret, expect3) || broken(!strcmp(ret, expect3_alt)), /* Win98, WinMe, NT4 */ "SnmpUtilOidToA failed got\n%s\n expected\n%s\n", ret, expect3);
ret = SnmpUtilOidToA(&oid5); ok(ret != NULL, "SnmpUtilOidToA failed\n"); ok(!strcmp(ret, expect4), "SnmpUtilOidToA failed got\n%s\n expected\n%s\n", ret, expect4);}
static void test_SnmpUtilAsnAnyCpyFree(void){ INT ret; static AsnAny dst, src = { ASN_INTEGER, { 1 } };
if (0) { /* these crash on XP */ ret = pSnmpUtilAsnAnyCpy(NULL, NULL); ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
ret = pSnmpUtilAsnAnyCpy(&dst, NULL); ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n");
ret = pSnmpUtilAsnAnyCpy(NULL, &src); ok(!ret, "SnmpUtilAsnAnyCpy succeeded\n"); }
ret = pSnmpUtilAsnAnyCpy(&dst, &src); ok(ret, "SnmpUtilAsnAnyCpy failed\n"); ok(!memcmp(&src, &dst, sizeof(AsnAny)), "SnmpUtilAsnAnyCpy failed\n");
if (0) { /* crashes on XP */ pSnmpUtilAsnAnyFree(NULL); } pSnmpUtilAsnAnyFree(&dst); ok(dst.asnType == ASN_NULL, "SnmpUtilAsnAnyFree failed\n"); ok(dst.asnValue.number == 1, "SnmpUtilAsnAnyFree failed\n");}
static void test_SnmpUtilOctetsCpyFree(void){ INT ret; static BYTE stream[] = { '1', '2', '3', '4' }; static AsnOctetString dst, src = { stream, 4, TRUE };
ret = pSnmpUtilOctetsCpy(NULL, NULL); ok(!ret, "SnmpUtilOctetsCpy succeeded\n");
memset(&dst, 1, sizeof(AsnOctetString)); ret = pSnmpUtilOctetsCpy(&dst, NULL); ok(ret, "SnmpUtilOctetsCpy failed\n"); ok(dst.length == 0, "SnmpUtilOctetsCpy failed\n"); ok(dst.stream == NULL, "SnmpUtilOctetsCpy failed\n"); ok(dst.dynamic == FALSE, "SnmpUtilOctetsCpy failed\n");
ret = pSnmpUtilOctetsCpy(NULL, &src); ok(!ret, "SnmpUtilOctetsCpy succeeded\n");
memset(&dst, 0, sizeof(AsnOctetString)); ret = pSnmpUtilOctetsCpy(&dst, &src); ok(ret, "SnmpUtilOctetsCpy failed\n"); ok(src.length == dst.length, "SnmpUtilOctetsCpy failed\n"); ok(!memcmp(src.stream, dst.stream, dst.length), "SnmpUtilOctetsCpy failed\n"); ok(dst.dynamic == TRUE, "SnmpUtilOctetsCpy failed\n");
pSnmpUtilOctetsFree(NULL); pSnmpUtilOctetsFree(&dst); ok(dst.stream == NULL, "SnmpUtilOctetsFree failed\n"); ok(dst.length == 0, "SnmpUtilOctetsFree failed\n"); ok(dst.dynamic == FALSE, "SnmpUtilOctetsFree failed\n");}
static void test_SnmpUtilOidCpyFree(void){ INT ret; static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 }; static AsnObjectIdentifier dst, src = { ARRAY_SIZE(ids), ids };
/* These crashes under win98 */ if(0) { ret = SnmpUtilOidCpy(NULL, NULL); ok(!ret, "SnmpUtilOidCpy succeeded\n");
memset(&dst, 1, sizeof(AsnObjectIdentifier)); ret = SnmpUtilOidCpy(&dst, NULL); ok(ret, "SnmpUtilOidCpy failed\n"); ok(dst.idLength == 0, "SnmpUtilOidCpy failed\n"); ok(dst.ids == NULL, "SnmpUtilOidCpy failed\n");
ret = SnmpUtilOidCpy(NULL, &src); ok(!ret, "SnmpUtilOidCpy succeeded\n"); }
memset(&dst, 0, sizeof(AsnObjectIdentifier)); ret = SnmpUtilOidCpy(&dst, &src); ok(ret, "SnmpUtilOidCpy failed\n"); ok(src.idLength == dst.idLength, "SnmpUtilOidCpy failed\n"); ok(!memcmp(src.ids, dst.ids, dst.idLength * sizeof(UINT)), "SnmpUtilOidCpy failed\n"); SnmpUtilOidFree(&dst);
/* These crashes under win98 */ if(0) { ret = SnmpUtilOidCpy(NULL, NULL); ok(!ret, "SnmpUtilOidCpy succeeded\n");
memset(&dst, 1, sizeof(AsnObjectIdentifier)); ret = SnmpUtilOidCpy(&dst, NULL); ok(ret, "SnmpUtilOidCpy failed\n"); ok(dst.idLength == 0, "SnmpUtilOidCpy failed\n"); ok(dst.ids == NULL, "SnmpUtilOidCpy failed\n");
ret = SnmpUtilOidCpy(NULL, &src); ok(!ret, "SnmpUtilOidCpy succeeded\n"); }
memset(&dst, 0, sizeof(AsnObjectIdentifier)); ret = SnmpUtilOidCpy(&dst, &src); ok(ret, "SnmpUtilOidCpy failed\n"); ok(src.idLength == dst.idLength, "SnmpUtilOidCpy failed\n"); ok(!memcmp(src.ids, dst.ids, dst.idLength * sizeof(UINT)), "SnmpUtilOidCpy failed\n");
/* This crashes under win98 */ if(0) { SnmpUtilOidFree(NULL); } SnmpUtilOidFree(&dst); ok(dst.idLength == 0, "SnmpUtilOidFree failed\n"); ok(dst.ids == NULL, "SnmpUtilOidFree failed\n");}
static void test_SnmpUtilOctetsNCmp(void){ INT ret; static BYTE stream1[] = { '1', '2', '3', '4' }; static BYTE stream2[] = { '5', '6', '7', '8' }; static AsnOctetString octets1 = { stream1, 4, FALSE }; static AsnOctetString octets2 = { stream2, 4, FALSE };
ret = pSnmpUtilOctetsNCmp(NULL, NULL, 0); ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
ret = pSnmpUtilOctetsNCmp(NULL, NULL, 1); ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
ret = pSnmpUtilOctetsNCmp(&octets1, NULL, 0); ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
ret = pSnmpUtilOctetsNCmp(&octets1, NULL, 1); ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
ret = pSnmpUtilOctetsNCmp(NULL, &octets2, 0); ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
ret = pSnmpUtilOctetsNCmp(NULL, &octets2, 1); ok(!ret, "SnmpUtilOctetsNCmp succeeded\n");
ret = pSnmpUtilOctetsNCmp(&octets1, &octets1, 0); ok(!ret, "SnmpUtilOctetsNCmp failed\n");
ret = pSnmpUtilOctetsNCmp(&octets1, &octets1, 4); ok(!ret, "SnmpUtilOctetsNCmp failed\n");
ret = pSnmpUtilOctetsNCmp(&octets1, &octets2, 4); ok(ret == -4, "SnmpUtilOctetsNCmp failed\n");
ret = pSnmpUtilOctetsNCmp(&octets2, &octets1, 4); ok(ret == 4, "SnmpUtilOctetsNCmp failed\n");}
static void test_SnmpUtilOctetsCmp(void){ INT ret; static BYTE stream1[] = { '1', '2', '3' }; static BYTE stream2[] = { '1', '2', '3', '4' }; static AsnOctetString octets1 = { stream1, 3, FALSE }; static AsnOctetString octets2 = { stream2, 4, FALSE };
if (0) { /* these crash on XP */ ret = pSnmpUtilOctetsCmp(NULL, NULL); ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
ret = pSnmpUtilOctetsCmp(&octets1, NULL); ok(!ret, "SnmpUtilOctetsCmp succeeded\n");
ret = pSnmpUtilOctetsCmp(NULL, &octets2); ok(!ret, "SnmpUtilOctetsCmp succeeded\n"); }
ret = pSnmpUtilOctetsCmp(&octets2, &octets1); ok(ret == 1, "SnmpUtilOctetsCmp failed\n");
ret = pSnmpUtilOctetsCmp(&octets1, &octets2); ok(ret < 0, "SnmpUtilOctetsCmp failed\n");}
static void test_SnmpUtilOidNCmp(void){ INT ret; static UINT ids1[] = { 1, 2, 3, 4 }; static UINT ids2[] = { 5, 6, 7, 8 }; static AsnObjectIdentifier oid1 = { 4, ids1 }; static AsnObjectIdentifier oid2 = { 4, ids2 };
/* This crashes under win98 */ if(0) { ret = SnmpUtilOidNCmp(NULL, NULL, 0); ok(!ret, "SnmpUtilOidNCmp succeeded\n");
ret = SnmpUtilOidNCmp(NULL, NULL, 1); ok(!ret, "SnmpUtilOidNCmp succeeded\n");
ret = SnmpUtilOidNCmp(&oid1, NULL, 0); ok(!ret, "SnmpUtilOidNCmp succeeded\n");
ret = SnmpUtilOidNCmp(&oid1, NULL, 1); ok(!ret, "SnmpUtilOidNCmp succeeded\n");
ret = SnmpUtilOidNCmp(NULL, &oid2, 0); ok(!ret, "SnmpUtilOidNCmp succeeded\n");
ret = SnmpUtilOidNCmp(NULL, &oid2, 1); ok(!ret, "SnmpUtilOidNCmp succeeded\n"); }
ret = SnmpUtilOidNCmp(&oid1, &oid1, 0); ok(!ret, "SnmpUtilOidNCmp failed\n");
ret = SnmpUtilOidNCmp(&oid1, &oid1, 4); ok(!ret, "SnmpUtilOidNCmp failed\n");
ret = SnmpUtilOidNCmp(&oid1, &oid2, 4); ok(ret < 0, "SnmpUtilOidNCmp failed: %d\n", ret);
ret = SnmpUtilOidNCmp(&oid2, &oid1, 4); ok(ret > 0, "SnmpUtilOidNCmp failed: %d\n", ret);
oid1.idLength = 3; memcpy(oid1.ids, oid2.ids, sizeof(UINT) * 4); ret = SnmpUtilOidNCmp(&oid1, &oid1, 4); ok(!ret, "SnmpUtilOidNCmp failed: %d\n", ret); ret = SnmpUtilOidNCmp(&oid2, &oid1, 4); ok(ret > 0, "SnmpUtilOidNCmp failed: %d\n", ret); ret = SnmpUtilOidNCmp(&oid1, &oid2, 4); ok(ret < 0, "SnmpUtilOidNCmp failed: %d\n", ret);
ret = SnmpUtilOidNCmp(&oid1, &oid2, 2); ok(!ret, "SnmpUtilOidNCmp failed: %d\n", ret); ret = SnmpUtilOidNCmp(&oid2, &oid1, 2); ok(!ret, "SnmpUtilOidNCmp failed: %d\n", ret);}
static void test_SnmpUtilOidCmp(void){ INT ret; static UINT ids1[] = { 1, 2, 3 }; static UINT ids2[] = { 1, 2, 3, 4 }; static AsnObjectIdentifier oid1 = { 3, ids1 }; static AsnObjectIdentifier oid2 = { 4, ids2 };
if (0) { /* these crash on XP */ ret = SnmpUtilOidCmp(NULL, NULL); ok(!ret, "SnmpUtilOidCmp succeeded\n");
ret = SnmpUtilOidCmp(&oid1, NULL); ok(!ret, "SnmpUtilOidCmp succeeded\n");
ret = SnmpUtilOidCmp(NULL, &oid2); ok(!ret, "SnmpUtilOidCmp succeeded\n"); }
ret = SnmpUtilOidCmp(&oid2, &oid1); ok(ret > 0, "SnmpUtilOidCmp failed\n");
ret = SnmpUtilOidCmp(&oid1, &oid2); ok(ret < 0, "SnmpUtilOidCmp failed\n");}
static void test_SnmpUtilOidAppend(void){ INT ret; UINT *ids1; static UINT ids2[] = { 4, 5, 6 }; static AsnObjectIdentifier oid1; static AsnObjectIdentifier oid2 = { 3, ids2 };
ids1 = SnmpUtilMemAlloc(3 * sizeof(UINT)); ids1[0] = 1; ids1[1] = 2; ids1[2] = 3;
oid1.idLength = 3; oid1.ids = ids1;
/* This crashes under win98 */ if(0) { ret = SnmpUtilOidAppend(NULL, NULL); ok(!ret, "SnmpUtilOidAppend succeeded\n");
ret = SnmpUtilOidAppend(&oid1, NULL); ok(ret, "SnmpUtilOidAppend failed\n");
ret = SnmpUtilOidAppend(NULL, &oid2); ok(!ret, "SnmpUtilOidAppend succeeded\n"); }
ret = SnmpUtilOidAppend(&oid1, &oid2); ok(ret, "SnmpUtilOidAppend failed\n"); ok(oid1.idLength == 6, "SnmpUtilOidAppend failed\n"); ok(!memcmp(&oid1.ids[3], ids2, 3 * sizeof(UINT)), "SnmpUtilOidAppend failed\n");
SnmpUtilOidFree(&oid1);}
static void test_SnmpUtilVarBindCpyFree(void){ INT ret; static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 }; static SnmpVarBind dst, src = { { 7, ids }, { ASN_INTEGER, { 1 } } };
/* This crashes under win98 */ if(0) { ret = SnmpUtilVarBindCpy(NULL, NULL); ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
memset(&dst, 0, sizeof(SnmpVarBind)); ret = SnmpUtilVarBindCpy(&dst, NULL); ok(ret, "SnmpUtilVarBindCpy failed\n"); ok(dst.name.idLength == 0, "SnmpUtilVarBindCpy failed\n"); ok(dst.name.ids == NULL, "SnmpUtilVarBindCpy failed\n"); ok(dst.value.asnType == ASN_NULL, "SnmpUtilVarBindCpy failed\n"); ok(dst.value.asnValue.number == 0, "SnmpUtilVarBindCpy failed\n");
ret = SnmpUtilVarBindCpy(NULL, &src); ok(!ret, "SnmpUtilVarBindCpy succeeded\n"); }
memset(&dst, 0, sizeof(SnmpVarBind)); ret = SnmpUtilVarBindCpy(&dst, &src); ok(ret, "SnmpUtilVarBindCpy failed\n"); ok(src.name.idLength == dst.name.idLength, "SnmpUtilVarBindCpy failed\n"); ok(!memcmp(src.name.ids, dst.name.ids, dst.name.idLength * sizeof(UINT)), "SnmpUtilVarBindCpy failed\n"); ok(!memcmp(&src.value, &dst.value, sizeof(AsnObjectSyntax)), "SnmpUtilVarBindCpy failed\n");
/* This crashes under win98 */ if(0) { SnmpUtilVarBindFree(NULL); } SnmpUtilVarBindFree(&dst); ok(dst.name.idLength == 0, "SnmpUtilVarBindFree failed\n"); ok(dst.name.ids == NULL, "SnmpUtilVarBindFree failed\n"); ok(dst.value.asnType == ASN_NULL, "SnmpUtilVarBindFree failed\n"); ok(dst.value.asnValue.number == 1, "SnmpUtilVarBindFree failed\n");}
static void test_SnmpUtilVarBindListCpyFree(void){ INT ret; static UINT ids[] = { 1, 3, 6, 1, 4, 1, 311 }; static SnmpVarBind src = { { 7, ids }, { ASN_INTEGER, { 1 } } }; static SnmpVarBindList dst_list, src_list = { &src, 1 };
if (0) { /* these crash on XP */ ret = SnmpUtilVarBindListCpy(NULL, NULL); ok(!ret, "SnmpUtilVarBindCpy succeeded\n");
ret = SnmpUtilVarBindListCpy(NULL, &src_list); ok(!ret, "SnmpUtilVarBindListCpy succeeded\n"); }
/* This crashes under win98 */ if(0) { memset(&dst_list, 0xff, sizeof(SnmpVarBindList)); ret = SnmpUtilVarBindListCpy(&dst_list, NULL); ok(ret, "SnmpUtilVarBindListCpy failed\n"); ok(dst_list.list == NULL, "SnmpUtilVarBindListCpy failed\n"); ok(dst_list.len == 0, "SnmpUtilVarBindListCpy failed\n"); }
ret = SnmpUtilVarBindListCpy(&dst_list, &src_list); ok(ret, "SnmpUtilVarBindListCpy failed\n"); ok(src_list.len == dst_list.len, "SnmpUtilVarBindListCpy failed\n"); ok(src_list.list->name.idLength == dst_list.list->name.idLength, "SnmpUtilVarBindListCpy failed\n"); ok(!memcmp(src_list.list->name.ids, dst_list.list->name.ids, dst_list.list->name.idLength * sizeof(UINT)), "SnmpUtilVarBindListCpy failed\n"); ok(!memcmp(&src_list.list->value, &dst_list.list->value, sizeof(AsnAny)), "SnmpUtilVarBindListCpy failed\n");
if (0) { /* crashes on XP */ SnmpUtilVarBindListFree(NULL); } SnmpUtilVarBindListFree(&dst_list); ok(dst_list.list == NULL, "SnmpUtilVarBindListFree failed\n"); ok(dst_list.len == 0, "SnmpUtilVarBindListFree failed\n");}
START_TEST(util){ InitFunctionPtrs();
test_SnmpUtilOidToA();
if (!pSnmpUtilAsnAnyCpy || !pSnmpUtilAsnAnyFree) win_skip("SnmpUtilAsnAnyCpy and/or SnmpUtilAsnAnyFree not available\n"); else test_SnmpUtilAsnAnyCpyFree();
if (!pSnmpUtilOctetsCpy || !pSnmpUtilOctetsFree) win_skip("SnmpUtilOctetsCpy and/or SnmpUtilOctetsFree not available\n"); else test_SnmpUtilOctetsCpyFree();
test_SnmpUtilOidCpyFree();
if (!pSnmpUtilOctetsNCmp) win_skip("SnmpUtilOctetsNCmp not available\n"); else test_SnmpUtilOctetsNCmp();
if (!pSnmpUtilOctetsCmp) win_skip("SnmpUtilOctetsCmp not available\n"); else test_SnmpUtilOctetsCmp();
test_SnmpUtilOidCmp(); test_SnmpUtilOidNCmp(); test_SnmpUtilOidAppend(); test_SnmpUtilVarBindCpyFree(); test_SnmpUtilVarBindListCpyFree();}