bool TestCreateObject(uint32_t offset, uint32_t length)
{
    JS::RootedObject obj(cx, CreateNewObject(offset, length));
    CHECK(VerifyObject(obj, offset, length, true));

    return true;
}
Exemple #2
0
bool Verify(const reflection::Schema &schema,
            const reflection::Object &root,
            const uint8_t *buf,
            size_t length) {
  Verifier v(buf, length);
  return VerifyObject(v, schema, root, flatbuffers::GetAnyRoot(buf), true);
}
bool TestTransferObject()
{
    JS::RootedObject obj1(cx, CreateNewObject(8, 12));
    CHECK(obj1);
    JS::RootedValue v1(cx, JS::ObjectValue(*obj1));

    // Create an Array of transferable values.
    JS::AutoValueVector argv(cx);
    if (!argv.append(v1))
        return false;

    JS::RootedObject obj(cx, JS_NewArrayObject(cx, JS::HandleValueArray::subarray(argv, 0, 1)));
    CHECK(obj);
    JS::RootedValue transferable(cx, JS::ObjectValue(*obj));

    JSAutoStructuredCloneBuffer cloned_buffer(JS::StructuredCloneScope::SameProcessSameThread, nullptr, nullptr);
    CHECK(cloned_buffer.write(cx, v1, transferable, nullptr, nullptr));
    JS::RootedValue v2(cx);
    CHECK(cloned_buffer.read(cx, &v2, nullptr, nullptr));
    JS::RootedObject obj2(cx, v2.toObjectOrNull());
    CHECK(VerifyObject(obj2, 8, 12, true));
    CHECK(JS_IsDetachedArrayBufferObject(obj1));

    return true;
}
Exemple #4
0
static int ReadObjectInfo (CFile& cf)
{
	int	i;

if ((gameFileInfo.objects.offset > -1) && gameFileInfo.objects.count) {
	CObject	*objP = OBJECTS.Buffer ();
	if (cf.Seek (gameFileInfo.objects.offset, SEEK_SET)) {
		Error ("Error seeking to object data\n(file damaged or invalid)");
		return -1;
		}
	OBJECTS.Clear (0, gameFileInfo.objects.count);
	for (i = 0; i < gameFileInfo.objects.count; i++, objP++) {
		objP->Read (cf);
		objP->info.nSignature = gameData.objs.nNextSignature++;
#if DBG
		if (i == nDbgObj) {
			extern int dbgObjInstances;
			dbgObjInstances++;
			}
#endif
		VerifyObject (objP);
		gameData.objs.init [i] = *objP;
		}
	}
gameData.objs.GatherEffects ();
for (i = 0; i < LEVEL_OBJECTS - 1; i++)
	gameData.objs.dropInfo [i].nNextPowerup = i + 1;
gameData.objs.dropInfo [i].nNextPowerup = -1;
gameData.objs.nFirstDropped =
gameData.objs.nLastDropped = -1;
gameData.objs.nFreeDropped = 0;
return 0;
}
bool TestCloneObject()
{
    JS::RootedObject obj1(cx, CreateNewObject(8, 12));
    CHECK(obj1);
    JSAutoStructuredCloneBuffer cloned_buffer(JS::StructuredCloneScope::SameProcessSameThread, nullptr, nullptr);
    JS::RootedValue v1(cx, JS::ObjectValue(*obj1));
    CHECK(cloned_buffer.write(cx, v1, nullptr, nullptr));
    JS::RootedValue v2(cx);
    CHECK(cloned_buffer.read(cx, &v2, nullptr, nullptr));
    JS::RootedObject obj2(cx, v2.toObjectOrNull());
    CHECK(VerifyObject(obj2, 8, 12, false));

    return true;
}
Exemple #6
0
bool VerifyObject(flatbuffers::Verifier &v,
                  const reflection::Schema &schema,
                  const reflection::Object &obj,
                  const flatbuffers::Table *table,
                  bool required) {
  if (!table) {
    if (!required)
      return true;
    else
      return false;
  }

  if (!table->VerifyTableStart(v))
    return false;

  for (uoffset_t i = 0; i < obj.fields()->size(); i++) {
    auto field_def = obj.fields()->Get(i);
    switch (field_def->type()->base_type()) {
      case reflection::None:
        assert(false);
        break;
      case reflection::UType:
        if (!table->VerifyField<uint8_t>(v, field_def->offset()))
          return false;
        break;
      case reflection::Bool:
      case reflection::Byte:
      case reflection::UByte:
        if (!table->VerifyField<int8_t>(v, field_def->offset()))
          return false;
        break;
      case reflection::Short:
      case reflection::UShort:
        if (!table->VerifyField<int16_t>(v, field_def->offset()))
          return false;
        break;
      case reflection::Int:
      case reflection::UInt:
        if (!table->VerifyField<int32_t>(v, field_def->offset()))
          return false;
        break;
      case reflection::Long:
      case reflection::ULong:
        if (!table->VerifyField<int64_t>(v, field_def->offset()))
          return false;
        break;
      case reflection::Float:
        if (!table->VerifyField<float>(v, field_def->offset()))
          return false;
        break;
      case reflection::Double:
        if (!table->VerifyField<double>(v, field_def->offset()))
          return false;
        break;
      case reflection::String:
        if (!table->VerifyField<uoffset_t>(v, field_def->offset()) ||
            !v.Verify(flatbuffers::GetFieldS(*table, *field_def))) {
          return false;
        }
        break;
      case reflection::Vector:
        if (!VerifyVector(v, schema, *table, *field_def))
          return false;
        break;
      case reflection::Obj: {
        auto child_obj = schema.objects()->Get(field_def->type()->index());
        if (child_obj->is_struct()) {
          if (!VerifyStruct(v, *table, field_def->offset(), *child_obj,
                            field_def->required())) {
            return false;
          }
        } else {
          if (!VerifyObject(v, schema, *child_obj,
                            flatbuffers::GetFieldT(*table, *field_def),
                            field_def->required())) {
            return false;
          }
        }
        break;
      }
      case reflection::Union: {
        //  get union type from the prev field
        voffset_t utype_offset = field_def->offset() - sizeof(voffset_t);
        auto utype = table->GetField<uint8_t>(utype_offset, 0);
        if (utype != 0) {
          // Means we have this union field present
          auto fb_enum = schema.enums()->Get(field_def->type()->index());
          auto child_obj = fb_enum->values()->Get(utype)->object();
          if (!VerifyObject(v, schema, *child_obj,
                            flatbuffers::GetFieldT(*table, *field_def),
                            field_def->required())) {
            return false;
          }
        }
        break;
      }
      default:
        assert(false);
        break;
    }
  }

  return true;
}
Exemple #7
0
bool VerifyVector(flatbuffers::Verifier &v,
                  const reflection::Schema &schema,
                  const flatbuffers::Table &table,
                  const reflection::Field &vec_field) {
  assert(vec_field.type()->base_type() == reflection::Vector);
  if (!table.VerifyField<uoffset_t>(v, vec_field.offset()))
    return false;

  switch (vec_field.type()->element()) {
    case reflection::None:
      assert(false);
      break;
    case reflection::UType:
      return v.Verify(flatbuffers::GetFieldV<uint8_t>(table, vec_field));
    case reflection::Bool:
    case reflection::Byte:
    case reflection::UByte:
      return v.Verify(flatbuffers::GetFieldV<int8_t>(table, vec_field));
    case reflection::Short:
    case reflection::UShort:
      return v.Verify(flatbuffers::GetFieldV<int16_t>(table, vec_field));
    case reflection::Int:
    case reflection::UInt:
      return v.Verify(flatbuffers::GetFieldV<int32_t>(table, vec_field));
    case reflection::Long:
    case reflection::ULong:
      return v.Verify(flatbuffers::GetFieldV<int64_t>(table, vec_field));
    case reflection::Float:
      return v.Verify(flatbuffers::GetFieldV<float>(table, vec_field));
    case reflection::Double:
      return v.Verify(flatbuffers::GetFieldV<double>(table, vec_field));
    case reflection::String: {
      auto vecString =
        flatbuffers::GetFieldV<flatbuffers::
        Offset<flatbuffers::String>>(table, vec_field);
      if (v.Verify(vecString) && v.VerifyVectorOfStrings(vecString)) {
        return true;
      } else {
        return false;
      }
    }
    case reflection::Vector:
      assert(false);
      break;
    case reflection::Obj: {
      auto obj = schema.objects()->Get(vec_field.type()->index());
      if (obj->is_struct()) {
        if (!VerifyVectorOfStructs(v, table, vec_field.offset(), *obj,
                                   vec_field.required())) {
          return false;
        }
      } else {
        auto vec =
          flatbuffers::GetFieldV<flatbuffers::
          Offset<flatbuffers::Table>>(table, vec_field);
        if (!v.Verify(vec))
          return false;
        if (vec) {
          for (uoffset_t j = 0; j < vec->size(); j++) {
            if (!VerifyObject(v, schema, *obj, vec->Get(j), true)) {
              return false;
            }
          }
        }
      }
      return true;
    }
    case reflection::Union:
      assert(false);
      break;
    default:
      assert(false);
      break;
  }

  return false;
}
Exemple #8
0
BOOL SNMP_MONITOR(char *server, int port, char *object, char *community, int timeout, 
				  int retrydelay, char *match, char *custpath, char *szReturn)
{
	int s, ret = 0;
	struct sockaddr_in serv;

	if((ret = MakeSocket(server, port, s, serv)) < 0)
	{
		if(ret == -1)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_1%>"));    // <%IDS_SNMP_1%>
		else if(ret == -2)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_2%>"));      //  <%IDS_SNMP_2%>
		else
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_3%>"));        //  <%IDS_SNMP_3%>

		return FALSE;
	}

	struct oid *oidp = VerifyObject(object);
	if(!oidp)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_4%>"));         //  <%IDS_SNMP_4%>
		return FALSE;
	}

	struct snval snval;
	if((ret = SN_VALUE(s, serv, community, 1, oidp, &snval)) < 0)
	{
		if(ret == -1)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_5%>"));      //  <%IDS_SNMP_5%>
		else if(ret == -2)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_6%>"));   //  <%IDS_SNMP_6%>
		else if(ret == -3)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_7%>"));     //  <%IDS_SNMP_7%>
		else if(ret == -4)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_8%>"));      //  <%IDS_SNMP_8%>
		else if(ret == -5)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_9%>"));      //  <%IDS_SNMP_9%>
		else if(ret == -6)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_10%>"));       //  <%IDS_SNMP_10%>
		else if(ret == -7)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_11%>"));    //  <%IDS_SNMP_11%>
		else if(ret == -8)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_12%>"));     //  <%IDS_SNMP_12%>
		else
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_13%>"));      //  <%IDS_SNMP_13%>

		if(oidp) free(oidp);
		return FALSE;
	}

	int i = 0;
	switch(snval.sv_type)
	{
	case ASN1_INT:
		switch(oidp->type)
		{
		case DFF1_IFTYPE:
			{
			char *iftype = NULL;
			iftype =	snval.sv_val.sv_int == 1 ? "other" : 
						snval.sv_val.sv_int == 2 ? "regular1822" :
						snval.sv_val.sv_int == 3 ? "hdh1822":
						snval.sv_val.sv_int == 4 ? "ddn-x25":
						snval.sv_val.sv_int == 5 ? "rfc877-x25":
						snval.sv_val.sv_int == 6 ? "ethernet-csmacd":
						snval.sv_val.sv_int == 7 ? "iso88023-csmacd":
						snval.sv_val.sv_int == 8 ? "iso88024-tokenBus":
						snval.sv_val.sv_int == 9 ? "iso88025-tokenRing":
						snval.sv_val.sv_int == 10 ? "iso88026-man":
						snval.sv_val.sv_int == 11? "starLan":
						snval.sv_val.sv_int == 12 ? "proteon-10Mbit":
						snval.sv_val.sv_int == 13 ? "proteon-80Mbit":
						snval.sv_val.sv_int == 14 ? "hyperchannel":
						snval.sv_val.sv_int == 15 ? "fddi":
						snval.sv_val.sv_int == 16 ? "lapb":
						snval.sv_val.sv_int == 17 ? "sdlc":
						snval.sv_val.sv_int == 18 ? "ds1":
						snval.sv_val.sv_int == 19 ? "e1":
						snval.sv_val.sv_int == 20 ? "basicISDN":
						snval.sv_val.sv_int == 21 ? "primaryISDN":
						snval.sv_val.sv_int == 22 ? "propPointToPointSerial":
						snval.sv_val.sv_int == 23 ? "ppp":
						snval.sv_val.sv_int == 24 ? "softwareLoopback":
						snval.sv_val.sv_int == 25 ? "eon":
						snval.sv_val.sv_int == 26 ? "ethernet-3Mbit":
						snval.sv_val.sv_int == 27 ? "nsip":
						snval.sv_val.sv_int == 28 ? "slip":
						snval.sv_val.sv_int == 29 ? "ultra":
						snval.sv_val.sv_int == 30 ? "ds3":
						snval.sv_val.sv_int == 31 ? "sip":
						snval.sv_val.sv_int == 32 ? "frame-relay": "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, iftype, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_ADMINSTATUS:
			{
			char *adminstatus = NULL;
			adminstatus =	snval.sv_val.sv_int == 1 ? "up" :
							snval.sv_val.sv_int == 2 ? "down" :
							snval.sv_val.sv_int == 3 ? "testing" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, adminstatus, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_OPERSTATUS:
			{
			char *operstatus = NULL;
			operstatus =	snval.sv_val.sv_int == 1 ? "up" :
							snval.sv_val.sv_int == 2 ? "down" :
							snval.sv_val.sv_int == 3 ? "testing" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, operstatus, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_IPFORWARDING:
			{
			char *forward = NULL;
			forward =	snval.sv_val.sv_int == 1 ? "forwarding" :
						snval.sv_val.sv_int == 2 ? "not-forwarding" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, forward, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_IPROUTETYPE:
			{
			char *routetype = NULL;
			routetype =	snval.sv_val.sv_int == 1 ? "other" : 
						snval.sv_val.sv_int == 2 ? "invalid" : 
						snval.sv_val.sv_int == 3 ? "direct" : 
						snval.sv_val.sv_int == 4 ? "indirect" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, routetype, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_IPROUTEPROTO:
			{
			char *routeproto = NULL;
			routeproto =	snval.sv_val.sv_int == 1 ? "other" : 
							snval.sv_val.sv_int == 2 ? "local" : 
							snval.sv_val.sv_int == 3 ? "netmgmt" : 
							snval.sv_val.sv_int == 4 ? "icmp" : 
							snval.sv_val.sv_int == 5 ? "egp" : 
							snval.sv_val.sv_int == 6 ? "ggp" : 
							snval.sv_val.sv_int == 7 ? "hello" : 
							snval.sv_val.sv_int == 8 ? "rip" : 
							snval.sv_val.sv_int == 9 ? "is-is" : 
							snval.sv_val.sv_int == 10 ? "es-is" : 
							snval.sv_val.sv_int == 11 ? "ciscoIgrp" : 
							snval.sv_val.sv_int == 12 ? "bbnSpfIgp" : 
							snval.sv_val.sv_int == 13 ? "ospf" : 
							snval.sv_val.sv_int == 14 ? "bgp" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, routeproto, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_NETTOMEDIATYPE:
			{
			char *nettomediatype = NULL;
			nettomediatype =	snval.sv_val.sv_int == 1 ? "other" : 
								snval.sv_val.sv_int == 2 ? "invalid" : 
								snval.sv_val.sv_int == 3 ? "dynamic" : 
								snval.sv_val.sv_int == 4 ? "static" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, nettomediatype, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_TCPRTOALGORITH:
			{
			char *rtoalgorithm = NULL;
			rtoalgorithm =	snval.sv_val.sv_int == 1 ? "other" :
							snval.sv_val.sv_int == 2 ? "constant" : 
							snval.sv_val.sv_int == 3 ? "rsre" : 
							snval.sv_val.sv_int == 4 ? "vanj" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, rtoalgorithm, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_TCPCONNSTATE:
			{
			char *connstate = NULL;
			connstate =	snval.sv_val.sv_int == 1 ? "closed" : 
						snval.sv_val.sv_int == 2 ? "listen" : 
						snval.sv_val.sv_int == 3 ? "synSent" : 
						snval.sv_val.sv_int == 4 ? "synReceived" : 
						snval.sv_val.sv_int == 5 ? "established" : 
						snval.sv_val.sv_int == 6 ? "finWait1" : 
						snval.sv_val.sv_int == 7 ? "finWait2" : 
						snval.sv_val.sv_int == 8 ? "closeWait" : 
						snval.sv_val.sv_int == 9 ? "lastAck" : 
						snval.sv_val.sv_int == 10 ? "closing" : 
						snval.sv_val.sv_int == 11 ? "timeWait" : 
						snval.sv_val.sv_int == 12 ? "deleteTCB" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, connstate, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_EGPNEIGHSTATE:
			{
			char *neighstate = NULL;
			neighstate =	snval.sv_val.sv_int == 1 ? "idle" : 
							snval.sv_val.sv_int == 2 ? "acquisition" : 
							snval.sv_val.sv_int == 3 ? "down" : 
							snval.sv_val.sv_int == 4 ? "up" : 
							snval.sv_val.sv_int == 5 ? "cease" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, neighstate, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_EGPNEIGHMODE:
			{
			char *neighmode = NULL;
			neighmode = snval.sv_val.sv_int == 1 ? "avtive" : 
						snval.sv_val.sv_int == 2 ? "passive" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, neighmode, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_EGPNEIGHEVENTT:
			{
			char *neigheventtrigger = NULL;
			neigheventtrigger =	snval.sv_val.sv_int == 1 ? "start" : 
								snval.sv_val.sv_int == 2 ? "stop" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, neigheventtrigger, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		case DFF1_SNMPENABLETRAP:
			{
			char *enableauthentraps = NULL;
			enableauthentraps =	snval.sv_val.sv_int == 1 ? "enabled" : 
								snval.sv_val.sv_int == 2 ? "disabled" : "unknown";

			//sprintf(szReturn, "%s=%s###%ld$", oidp->name, enableauthentraps, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			}
			break;
		default:
			//sprintf(szReturn, "%s=%ld$", oidp->name, snval.sv_val.sv_int);
			sprintf(szReturn, "value=%ld$", snval.sv_val.sv_int);
			break;
		}
		if(oidp) free(oidp);
		return TRUE;
	case ASN1_COUNTER:
	case ASN1_GAUGE:
		//sprintf(szReturn, "%s=%ld$", oidp->name, snval.sv_val.sv_int);
		sprintf(szReturn, "value=%u$", snval.sv_val.sv_int);
		if(oidp) free(oidp);
		return TRUE;
	case ASN1_TIMETICKS:
		{
		int days = 0, hours = 0, minutes = 0, secs = 0, psecs = 0;
		days = snval.sv_val.sv_int / (24 * 3600 * 100);
		hours = (snval.sv_val.sv_int % (24 * 3600 * 100)) / (3600 * 100);
		minutes = ((snval.sv_val.sv_int % (24 * 3600 * 100)) % (3600 * 100)) / (60 * 100);
		secs = (((snval.sv_val.sv_int % (24 * 3600 * 100)) % (3600 * 100)) % (60 * 100)) / 100;
		psecs = (((snval.sv_val.sv_int % (24 * 3600 * 100)) % (3600 * 100)) % (60 * 100)) % 100;

		//if(days)
		//	sprintf(szReturn, "%s=%d days, %d:%d:%d.%d###%ld$", oidp->name, days, hours, minutes, secs, psecs, snval.sv_val.sv_int);
		//else
		//	sprintf(szReturn, "%s=%d:%d:%d.%d###%ld$", oidp->name, hours, minutes, secs, psecs, snval.sv_val.sv_int);
		sprintf(szReturn, "value=%u$", snval.sv_val.sv_int);
		if(oidp) free(oidp);
		return TRUE;
		}
	case ASN1_OCTSTR:
		//if(!compare_oid(*oidp, interfaces_ifPhysAddress) || !compare_oid(*oidp, at_atPhysAddress))
		if(oidp->type == DFF1_PHYSADDR && snval.sv_val.sv_str.sv_len == 6)
			//sprintf(szReturn, "%s=%x-%x-%x-%x-%x-%x$", oidp->name, 
			//											*snval.sv_val.sv_str.sv_str & 0xFF, 
			//											*(snval.sv_val.sv_str.sv_str + 1) & 0xFF, 
			//											*(snval.sv_val.sv_str.sv_str + 2) & 0xFF, 
			//											*(snval.sv_val.sv_str.sv_str + 3) & 0xFF, 
			//											*(snval.sv_val.sv_str.sv_str + 4) & 0xFF, 
			//											*(snval.sv_val.sv_str.sv_str + 5) & 0xFF);
			sprintf(szReturn, "value=%x-%x-%x-%x-%x-%x$", 
														*snval.sv_val.sv_str.sv_str & 0xFF, 
														*(snval.sv_val.sv_str.sv_str + 1) & 0xFF, 
														*(snval.sv_val.sv_str.sv_str + 2) & 0xFF, 
														*(snval.sv_val.sv_str.sv_str + 3) & 0xFF, 
														*(snval.sv_val.sv_str.sv_str + 4) & 0xFF, 
														*(snval.sv_val.sv_str.sv_str + 5) & 0xFF);

		else
		{
			//sprintf(szReturn, "%s=", oidp->name);
			//strncat(szReturn, snval.sv_val.sv_str.sv_str, snval.sv_val.sv_str.sv_len);
			//strncat(szReturn, "$", 1);
			sprintf(szReturn, "value=", oidp->name);
			strncat(szReturn, snval.sv_val.sv_str.sv_str, snval.sv_val.sv_str.sv_len);
			strncat(szReturn, "$", 1);

		}
		if(oidp) free(oidp);
		return TRUE;
	case ASN1_NULL:
		//sprintf(szReturn, "%s=%s$", oidp->name, "");
		sprintf(szReturn, "value=%s$", "");
		if(oidp) free(oidp);
		return TRUE;
	case ASN1_OBJID:
		//sprintf(szReturn, "%s=", oidp->name);
		sprintf(szReturn, "%s=", "value");
		if(snval.sv_val.sv_oid.len <= 3)
			sprintf(szReturn, "%s$", szReturn);
		else
			while(i < snval.sv_val.sv_oid.len)
			{
				if(i == 0)
					sprintf(szReturn, "%s1.3.", szReturn);
				else if(i == snval.sv_val.sv_oid.len - 1)
					sprintf(szReturn, "%s%d$", szReturn, snval.sv_val.sv_oid.id[i]);
				else
					sprintf(szReturn, "%s%d.", szReturn, snval.sv_val.sv_oid.id[i]);
		
				i ++;
			}
		if(oidp) free(oidp);
		return TRUE;
	case ASN1_IPADDR:
		//sprintf(szReturn, "%s=%d.%d.%d.%d$",	oidp->name, 
		//										(u_char)*snval.sv_val.sv_ipaddr, 
		//										(u_char)*(snval.sv_val.sv_ipaddr + 1), 
		//										(u_char)*(snval.sv_val.sv_ipaddr + 2), 
		//										(u_char)*(snval.sv_val.sv_ipaddr + 3));
		sprintf(szReturn, "value=%d.%d.%d.%d$",	
												(u_char)*snval.sv_val.sv_ipaddr, 
												(u_char)*(snval.sv_val.sv_ipaddr + 1), 
												(u_char)*(snval.sv_val.sv_ipaddr + 2), 
												(u_char)*(snval.sv_val.sv_ipaddr + 3));
		if(oidp) free(oidp);
		return TRUE;
	default:
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SNMP_14%>"));    //  <%IDS_SNMP_14%>
		if(oidp) free(oidp);
		return FALSE;
	}

	return TRUE;
}