diff options
Diffstat (limited to 'ASNMP/asnmp/asn1.cpp')
-rw-r--r-- | ASNMP/asnmp/asn1.cpp | 963 |
1 files changed, 482 insertions, 481 deletions
diff --git a/ASNMP/asnmp/asn1.cpp b/ASNMP/asnmp/asn1.cpp index 77dc9baa5ec..da2e936349b 100644 --- a/ASNMP/asnmp/asn1.cpp +++ b/ASNMP/asnmp/asn1.cpp @@ -33,13 +33,13 @@ All Rights Reserved - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose and without fee is hereby granted, + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that - both that copyright notice and this permission notice appear in + both that copyright notice and this permission notice appear in supporting documentation, and that the name of CMU not be used in advertising or publicity pertaining to distribution of the - software without specific, written prior permission. + software without specific, written prior permission. CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL @@ -63,39 +63,39 @@ ACE_RCSID(asnmp, asn1, "$Id$") * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ -u_char * asn1::parse_int( u_char *data, - int *datalength, - u_char *type, - long int *intp, - int intsize) +u_char * asn1::parse_int( u_char *data, + int *datalength, + u_char *type, + long int *intp, + int intsize) { ACE_TRACE("asn1::parse_int"); /* * ASN.1 integer ::= 0x02 asnlength byte {byte}* */ u_char *bufp = data; - u_long asn_length; + u_long asn_length; long value = 0; if (intsize != sizeof (long)){ ASNERROR("not long"); - return 0; + return NULL; } *type = *bufp++; bufp =asn1::parse_length(bufp, &asn_length); - if (bufp == 0){ + if (bufp == NULL){ ASNERROR("bad length"); - return 0; + return NULL; } if ((int)(asn_length + (bufp - data)) > *datalength){ ASNERROR("overflow of message"); - return 0; + return NULL; } if ((int)asn_length > intsize){ ASNERROR("I don't support such large integers"); - return 0; + return NULL; } *datalength -= (int)asn_length + (bufp - data); if (*bufp & 0x80) @@ -115,44 +115,44 @@ u_char * asn1::parse_int( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ -u_char * asn1::parse_unsigned_int( u_char *data, - int *datalength, - u_char *type, - u_long *intp, - int intsize) +u_char * asn1::parse_unsigned_int( u_char *data, + int *datalength, + u_char *type, + u_long *intp, + int intsize) { ACE_TRACE("asn1::parse_unsigned_int"); /* * ASN.1 integer ::= 0x02 asnlength byte {byte}* */ u_char *bufp = data; - u_long asn_length; + u_long asn_length; u_long value = 0; if (intsize != sizeof (long)){ ASNERROR("not long"); - return 0; + return NULL; } *type = *bufp++; bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0){ + if (bufp == NULL){ ASNERROR("bad length"); - return 0; + return NULL; } if ((int)(asn_length + (bufp - data)) > *datalength){ ASNERROR("overflow of message"); - return 0; + return NULL; } if (((int)asn_length > (intsize + 1)) || (((int)asn_length == intsize + 1) && *bufp != 0x00)){ ASNERROR("I don't support such large integers"); - return 0; + return NULL; } *datalength -= (int)asn_length + (bufp - data); if (*bufp & 0x80) - value = (u_long) -1; + value = (u_long) -1; while(asn_length--) value = (value << 8) | *bufp++; *intp = value; @@ -168,13 +168,13 @@ u_char * asn1::parse_unsigned_int( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::build_int( u_char *data, - int *datalength, - u_char type, - long *intp, - int intsize) + int *datalength, + u_char type, + long *intp, + int intsize) { ACE_TRACE("asn1::build_int"); /* @@ -185,7 +185,7 @@ u_char * asn1::build_int( u_char *data, u_long mask; if (intsize != sizeof (long)) - return 0; + return NULL; integer = *intp; /* * Truncate "unnecessary" bytes off of the most significant end of this @@ -196,15 +196,15 @@ u_char * asn1::build_int( u_char *data, mask = 0x1FF << ((8 * (sizeof(long) - 1)) - 1); /* mask is 0xFF800000 on a big-endian machine */ while((((integer & mask) == 0) || ((integer & mask) == mask)) - && intsize > 1){ + && intsize > 1){ intsize--; integer <<= 8; } data = asn1::build_header(data, datalength, type, intsize); - if (data == 0) - return 0; + if (data == NULL) + return NULL; if (*datalength < intsize) - return 0; + return NULL; *datalength -= intsize; mask = 0xFF << (8 * (sizeof(long) - 1)); /* mask is 0xFF000000 on a big-endian machine */ @@ -224,13 +224,13 @@ u_char * asn1::build_int( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::build_unsigned_int( u_char *data, - int *datalength, - u_char type, - u_long *intp, - int intsize) + int *datalength, + u_char type, + u_long *intp, + int intsize) { ACE_TRACE("asn1::build_unsigned_int"); /* @@ -242,7 +242,7 @@ u_char * asn1::build_unsigned_int( u_char *data, int add_null_byte = 0; if (intsize != sizeof (long)) - return 0; + return NULL; integer = *intp; mask = 0xFF << (8 * (sizeof(long) - 1)); /* mask is 0xFF000000 on a big-endian machine */ @@ -263,10 +263,10 @@ u_char * asn1::build_unsigned_int( u_char *data, integer <<= 8; } data = asn1::build_header(data, datalength, type, intsize); - if (data == 0) - return 0; + if (data == NULL) + return NULL; if (*datalength < intsize) - return 0; + return NULL; *datalength -= intsize; if (add_null_byte == 1){ *data++ = '\0'; @@ -292,13 +292,13 @@ u_char * asn1::build_unsigned_int( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ -u_char * asn1::parse_string( u_char *data, - int *datalength, - u_char *type, - u_char *string, - int *strlength) +u_char * asn1::parse_string( u_char *data, + int *datalength, + u_char *type, + u_char *string, + int *strlength) { ACE_TRACE("asn1::parse_string"); /* @@ -307,19 +307,19 @@ u_char * asn1::parse_string( u_char *data, * cmpdstring ::= 0x24 asnlength string {string}* */ u_char *bufp = data; - u_long asn_length; + u_long asn_length; *type = *bufp++; bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; + if (bufp == NULL) + return NULL; if ((int)(asn_length + (bufp - data)) > *datalength){ ASNERROR("overflow of message"); - return 0; + return NULL; } if ((int)asn_length > *strlength){ ASNERROR("I don't support such long strings"); - return 0; + return NULL; } // fixed ACE_OS::memcpy((char *)string, (char *)bufp, (int)asn_length); @@ -337,13 +337,13 @@ u_char * asn1::parse_string( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::build_string( u_char *data, - int *datalength, - u_char type, - u_char *string, - int strlength) + int *datalength, + u_char type, + u_char *string, + int strlength) { ACE_TRACE("asn1::build_string"); /* @@ -353,10 +353,10 @@ u_char * asn1::build_string( u_char *data, * This code will never send a compound string. */ data = asn1::build_header(data, datalength, type, strlength); - if (data == 0) - return 0; + if (data == NULL) + return NULL; if (*datalength < strlength) - return 0; + return NULL; // fixed ACE_OS::memcpy((u_char *)data,(u_char *)string, strlength); *datalength -= strlength; @@ -371,30 +371,30 @@ u_char * asn1::build_string( u_char *data, * in this object following the id and length. * * Returns a pointer to the first byte of the contents of this object. - * Returns 0 on any error. + * Returns NULL on any error. */ u_char *asn1::parse_header( u_char *data, - int *datalength, - u_char *type) + int *datalength, + u_char *type) { ACE_TRACE("asn1::parse_header"); u_char *bufp = data; register int header_len; - u_long asn_length; + u_long asn_length; /* this only works on data types < 30, i.e. no extension octets */ if (IS_EXTENSION_ID(*bufp)){ ASNERROR("can't process ID >= 30"); - return 0; + return NULL; } *type = *bufp; bufp = asn1::parse_length(bufp + 1, &asn_length); - if (bufp == 0) - return 0; + if (bufp == NULL) + return NULL; header_len = bufp - data; if ((int)(header_len + asn_length) > *datalength){ ASNERROR("asn length too long"); - return 0; + return NULL; } *datalength = (int)asn_length; return bufp; @@ -411,20 +411,20 @@ u_char *asn1::parse_header( u_char *data, * The maximum length is 0xFFFF; * * Returns a pointer to the first byte of the contents of this object. - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::build_header( u_char *data, - int *datalength, - u_char type, - int length) + int *datalength, + u_char type, + int length) { ACE_TRACE("asn1::build_header"); if (*datalength < 1) - return 0; + return NULL; *data++ = type; (*datalength)--; return asn1::build_length(data, datalength, length); - + } /* @@ -438,18 +438,18 @@ u_char * asn1::build_header( u_char *data, * The maximum length is 0xFFFF; * * Returns a pointer to the first byte of the contents of this object. - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::build_sequence( u_char *data, - int *datalength, - u_char type, - int length) + int *datalength, + u_char type, + int length) { ACE_TRACE("asn1::build_sequence"); *datalength -= 4; if (*datalength < 0){ - *datalength += 4; /* fix up before punting */ - return 0; + *datalength += 4; /* fix up before punting */ + return NULL; } *data++ = type; *data++ = (u_char)(0x02 | ASN_LONG_LEN); @@ -464,23 +464,23 @@ u_char * asn1::build_sequence( u_char *data, * * Returns a pointer to the first byte after this length * field (aka: the start of the data field). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::parse_length( u_char *data, - u_long *length) + u_long *length) { ACE_TRACE("asn1::parse_length"); u_char lengthbyte = *data; if (lengthbyte & ASN_LONG_LEN){ - lengthbyte &= ~ASN_LONG_LEN; /* turn MSb off */ + lengthbyte &= ~ASN_LONG_LEN; /* turn MSb off */ if (lengthbyte == 0){ ASNERROR("We don't support indefinite lengths"); - return 0; + return NULL; } if (lengthbyte > sizeof(long)){ ASNERROR("we can't support data lengths that long"); - return 0; + return NULL; } // fixed ACE_OS::memcpy((char *)length, (char *)data + 1, (int)lengthbyte); @@ -494,8 +494,8 @@ u_char * asn1::parse_length( u_char *data, }; u_char *asn1::build_length( u_char *data, - int *datalength, - int length) + int *datalength, + int length) { ACE_TRACE("asn1::build_length"); u_char *start_data = data; @@ -504,21 +504,21 @@ u_char *asn1::build_length( u_char *data, if (length < 0x80){ if (*datalength < 1){ ASNERROR("build_length"); - return 0; - } + return NULL; + } *data++ = (u_char)length; } else if (length <= 0xFF){ if (*datalength < 2){ ASNERROR("build_length"); - return 0; - } + return NULL; + } *data++ = (u_char)(0x01 | ASN_LONG_LEN); *data++ = (u_char)length; } else { /* 0xFF < length <= 0xFFFF */ if (*datalength < 3){ ASNERROR("build_length"); - return 0; - } + return NULL; + } *data++ = (u_char)(0x02 | ASN_LONG_LEN); *data++ = (u_char)((length >> 8) & 0xFF); *data++ = (u_char)(length & 0xFF); @@ -538,13 +538,13 @@ u_char *asn1::build_length( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char *asn1::parse_objid( u_char *data, - int *datalength, - u_char *type, - oid *objid, - int *objidlength) + int *datalength, + u_char *type, + oid *objid, + int *objidlength) { ACE_TRACE("asn1::parse_objid"); /* @@ -557,15 +557,15 @@ u_char *asn1::parse_objid( u_char *data, oid *oidp = objid + 1; u_long subidentifier; long length; - u_long asn_length; + u_long asn_length; *type = *bufp++; bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; + if (bufp == NULL) + return NULL; if ((int)asn_length + (bufp - data) > *datalength){ ASNERROR("overflow of message"); - return 0; + return NULL; } *datalength -= (int)asn_length + (bufp - data); @@ -574,16 +574,16 @@ u_char *asn1::parse_objid( u_char *data, objid[0] = objid[1] = 0; length = asn_length; - (*objidlength)--; /* account for expansion of first byte */ + (*objidlength)--; /* account for expansion of first byte */ while (length > 0 && (*objidlength)-- > 0){ subidentifier = 0; - do { /* shift and add in low order 7 bits */ + do { /* shift and add in low order 7 bits */ subidentifier = (subidentifier << 7) + (*(u_char *)bufp & ~ASN_BIT8); length--; - } while (*(u_char *)bufp++ & ASN_BIT8); /* last byte has high bit clear */ + } while (*(u_char *)bufp++ & ASN_BIT8); /* last byte has high bit clear */ if (subidentifier > (u_long)MAX_SUBID){ ASNERROR("subidentifier too long"); - return 0; + return NULL; } *oidp++ = (oid)subidentifier; } @@ -591,7 +591,7 @@ u_char *asn1::parse_objid( u_char *data, /* * The first two subidentifiers are encoded into the first component * with the value (X * 40) + Y, where: - * X is the value of the first subidentifier. + * X is the value of the first subidentifier. * Y is the value of the second subidentifier. */ subidentifier = (u_long)objid[1]; @@ -616,13 +616,13 @@ u_char *asn1::parse_objid( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char *asn1::build_objid( u_char *data, - int *datalength, - u_char type, - oid *objid, - int objidlength) + int *datalength, + u_char type, + oid *objid, + int objidlength) { ACE_TRACE("asn1::build_objid"); /* @@ -656,28 +656,28 @@ u_char *asn1::build_objid( u_char *data, bits = 0; /* testmask *MUST* !!!! be of an u_type */ for(testmask = 0x7F, testbits = 0; testmask != 0; - testmask <<= 7, testbits += 7){ - if (subid & testmask){ /* if any bits set */ - mask = testmask; - bits = testbits; - } + testmask <<= 7, testbits += 7){ + if (subid & testmask){ /* if any bits set */ + mask = testmask; + bits = testbits; + } } /* mask can't be zero here */ for(;mask != 0x7F; mask >>= 7, bits -= 7){ - /* fix a mask that got truncated above */ - if (mask == 0x1E00000) - mask = 0xFE00000; - *bp++ = (u_char)(((subid & mask) >> bits) | ASN_BIT8); + /* fix a mask that got truncated above */ + if (mask == 0x1E00000) + mask = 0xFE00000; + *bp++ = (u_char)(((subid & mask) >> bits) | ASN_BIT8); } *bp++ = (u_char)(subid & mask); } } asnlength = bp - buf; data = asn1::build_header(data, datalength, type, asnlength); - if (data == 0) - return 0; + if (data == NULL) + return NULL; if (*datalength < asnlength) - return 0; + return NULL; // fixed ACE_OS::memcpy((char *)data, (char *)buf, asnlength); *datalength -= asnlength; @@ -692,26 +692,26 @@ u_char *asn1::build_objid( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ -u_char *asn1::parse_null(u_char *data, - int *datalength, - u_char *type) +u_char *asn1::parse_null(u_char *data, + int *datalength, + u_char *type) { ACE_TRACE("asn1::parse_null"); /* * ASN.1 null ::= 0x05 0x00 */ u_char *bufp = data; - u_long asn_length; + u_long asn_length; *type = *bufp++; bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; + if (bufp == NULL) + return NULL; if (asn_length != 0){ - ASNERROR("Malformed 0"); - return 0; + ASNERROR("Malformed NULL"); + return NULL; } *datalength -= (bufp - data); return bufp + asn_length; @@ -726,11 +726,11 @@ u_char *asn1::parse_null(u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char *asn1::build_null( u_char *data, - int *datalength, - u_char type) + int *datalength, + u_char type) { ACE_TRACE("asn1::build_null"); /* @@ -749,40 +749,40 @@ u_char *asn1::build_null( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char *asn1::parse_bitstring( u_char *data, - int *datalength, - u_char *type, - u_char *string, - int *strlength) + int *datalength, + u_char *type, + u_char *string, + int *strlength) { ACE_TRACE("asn1::parse_bitstring"); /* * bitstring ::= 0x03 asnlength unused {byte}* */ u_char *bufp = data; - u_long asn_length; + u_long asn_length; *type = *bufp++; bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0) - return 0; + if (bufp == NULL) + return NULL; if ((int)(asn_length + (bufp - data)) > *datalength){ ASNERROR("overflow of message"); - return 0; + return NULL; } if ((int) asn_length > *strlength){ ASNERROR("I don't support such long bitstrings"); - return 0; + return NULL; } if (asn_length < 1){ ASNERROR("Invalid bitstring"); - return 0; + return NULL; } if (*bufp > 7){ ASNERROR("Invalid bitstring"); - return 0; + return NULL; } // fixed ACE_OS::memcpy((char *)string,(char *)bufp, (int)asn_length); @@ -801,13 +801,13 @@ u_char *asn1::parse_bitstring( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char *asn1::build_bitstring( u_char *data, - int *datalength, - u_char type, - u_char *string, - int strlength) + int *datalength, + u_char type, + u_char *string, + int strlength) { ACE_TRACE("asn1::build_bitstring"); /* @@ -815,13 +815,13 @@ u_char *asn1::build_bitstring( u_char *data, */ if (strlength < 1 || *string || *string > 7){ ASNERROR("Building invalid bitstring"); - return 0; + return NULL; } data = asn1::build_header(data, datalength, type, strlength); - if (data == 0) - return 0; + if (data == NULL) + return NULL; if (*datalength < strlength) - return 0; + return NULL; // fixed ACE_OS::memcpy((char *)data,(char *)string, strlength); *datalength -= strlength; @@ -838,46 +838,46 @@ u_char *asn1::build_bitstring( u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::parse_unsigned_int64(u_char *data, - int *datalength, - u_char *type, - struct counter64 *cp, - int countersize) + int *datalength, + u_char *type, + struct counter64 *cp, + int countersize) { ACE_TRACE("asn1::parse_unsigned_int64"); /* * ASN.1 integer ::= 0x02 asnlength byte {byte}* */ u_char *bufp = data; - u_long asn_length; + u_long asn_length; u_long low = 0, high = 0; int intsize = 4; - + if (countersize != sizeof(struct counter64)){ ASNERROR("not right size"); - return 0; + return NULL; } *type = *bufp++; bufp = asn1::parse_length(bufp, &asn_length); - if (bufp == 0){ + if (bufp == NULL){ ASNERROR("bad length"); - return 0; + return NULL; } if ((int)(asn_length + (bufp - data)) > *datalength){ ASNERROR("overflow of message"); - return 0; + return NULL; } if (((int)asn_length > (intsize * 2 + 1)) || (((int)asn_length == (intsize * 2) + 1) && *bufp != 0x00)){ ASNERROR("I don't support such large integers"); - return 0; + return NULL; } *datalength -= (int)asn_length + (bufp - data); if (*bufp & 0x80){ - low = (u_long) -1; // integer is negative - high = (u_long) -1; + low = (u_long) -1; // integer is negative + high = (u_long) -1; } while(asn_length--){ high = (high << 8) | ((low & 0xFF000000) >> 24); @@ -897,13 +897,13 @@ u_char * asn1::parse_unsigned_int64(u_char *data, * * Returns a pointer to the first byte past the end * of this object (i.e. the start of the next object). - * Returns 0 on any error. + * Returns NULL on any error. */ u_char * asn1::build_unsigned_int64( u_char *data, - int *datalength, - u_char type, - struct counter64 *cp, - int countersize) + int *datalength, + u_char type, + struct counter64 *cp, + int countersize) { ACE_TRACE("asn1::build_unsigned_int64"); /* @@ -916,7 +916,7 @@ u_char * asn1::build_unsigned_int64( u_char *data, int intsize; if (countersize != sizeof (struct counter64)) - return 0; + return NULL; intsize = 8; low = cp->low; high = cp->high; @@ -936,17 +936,17 @@ u_char * asn1::build_unsigned_int64( u_char *data, mask2 = 0x1FF << ((8 * (sizeof(long) - 1)) - 1); /* mask2 is 0xFF800000 on a big-endian machine */ while((((high & mask2) == 0) || ((high & mask2) == mask2)) - && intsize > 1){ + && intsize > 1){ intsize--; high = (high << 8) | ((low & mask) >> (8 * (sizeof(long) - 1))); low <<= 8; } data = asn1::build_header(data, datalength, type, intsize); - if (data == 0) - return 0; + if (data == NULL) + return NULL; if (*datalength < intsize) - return 0; + return NULL; *datalength -= intsize; if (add_null_byte == 1){ *data++ = '\0'; @@ -957,7 +957,7 @@ u_char * asn1::build_unsigned_int64( u_char *data, high = (high << 8) | ((low & mask) >> (8 * (sizeof(long) - 1))); low <<= 8; - + } return data; } @@ -969,14 +969,14 @@ struct snmp_pdu * cmu_snmp::pdu_create( int command) ACE_TRACE("cmu_snmp::snmp_pdu_create"); struct snmp_pdu *pdu; - ACE_NEW_RETURN(pdu, snmp_pdu, 0); + ACE_NEW_RETURN(pdu, snmp_pdu, 0); ACE_OS::memset((char *)pdu, 0,sizeof(struct snmp_pdu)); pdu->command = command; pdu->errstat = 0; pdu->errindex = 0; - pdu->enterprise = 0; + pdu->enterprise = NULL; pdu->enterprise_length = 0; - pdu->variables = 0; + pdu->variables = NULL; return pdu; } @@ -1009,21 +1009,21 @@ void cmu_snmp::free_pdu( struct snmp_pdu *pdu) // add a null var to a pdu -void cmu_snmp::add_var(struct snmp_pdu *pdu, - oid *name, - int name_length, - SmiVALUE *smival) +void cmu_snmp::add_var(struct snmp_pdu *pdu, + oid *name, + int name_length, + SmiVALUE *smival) { ACE_TRACE("cmu_snmp::add_var"); struct variable_list *vars; // if we don't have a vb list ,create one - if (pdu->variables == 0) { + if (pdu->variables == NULL) { ACE_NEW(pdu->variables, variable_list); vars = pdu->variables; } - else + else { // we have one, find the end for(vars = pdu->variables; vars->next_variable; vars = vars->next_variable); // create one @@ -1033,7 +1033,7 @@ void cmu_snmp::add_var(struct snmp_pdu *pdu, } // add the oid with no data - vars->next_variable = 0; + vars->next_variable = NULL; // hook in the Oid portion ACE_NEW(vars->name, oid[(name_length)]); @@ -1051,9 +1051,9 @@ void cmu_snmp::add_var(struct snmp_pdu *pdu, case sNMP_SYNTAX_NOSUCHINSTANCE: case sNMP_SYNTAX_ENDOFMIBVIEW: { - vars->type = (u_char) smival->syntax; - vars->val.string = 0; - vars->val_len = 0; + vars->type = (u_char) smival->syntax; + vars->val.string = NULL; + vars->val_len = 0; } break; @@ -1062,68 +1062,68 @@ void cmu_snmp::add_var(struct snmp_pdu *pdu, case sNMP_SYNTAX_OPAQUE: case sNMP_SYNTAX_IPADDR: { - vars->type = (u_char) smival->syntax; - ACE_NEW(vars->val.string, + vars->type = (u_char) smival->syntax; + ACE_NEW(vars->val.string, u_char[(unsigned)smival->value.string.len]); - vars->val_len = (int) smival->value.string.len; - ACE_OS::memcpy( (u_char *) vars->val.string, - (u_char *) smival->value.string.ptr, - (unsigned) smival->value.string.len); + vars->val_len = (int) smival->value.string.len; + ACE_OS::memcpy( (u_char *) vars->val.string, + (u_char *) smival->value.string.ptr, + (unsigned) smival->value.string.len); } break; // oid case sNMP_SYNTAX_OID: { - vars->type = (u_char) smival->syntax; + vars->type = (u_char) smival->syntax; vars->val_len = (int) smival->value.oid.len * sizeof(oid); - ACE_NEW(vars->val.objid, oid[(unsigned)vars->val_len]); - ACE_OS::memcpy((u_long *)vars->val.objid, - (u_long *)smival->value.oid.ptr, - (unsigned) vars->val_len); + ACE_NEW(vars->val.objid, oid[(unsigned)vars->val_len]); + ACE_OS::memcpy((u_long *)vars->val.objid, + (u_long *)smival->value.oid.ptr, + (unsigned) vars->val_len); } break; - + case sNMP_SYNTAX_TIMETICKS: case sNMP_SYNTAX_CNTR32: case sNMP_SYNTAX_GAUGE32: case sNMP_SYNTAX_UINT32: { - long templong; - vars->type = (u_char) smival->syntax; - ACE_NEW(vars->val.integer, long); - vars->val_len = sizeof(long); - templong = (long) smival->value.uNumber; - ACE_OS::memcpy( (long*) vars->val.integer, - (long*) &templong, - sizeof(long)); + long templong; + vars->type = (u_char) smival->syntax; + ACE_NEW(vars->val.integer, long); + vars->val_len = sizeof(long); + templong = (long) smival->value.uNumber; + ACE_OS::memcpy( (long*) vars->val.integer, + (long*) &templong, + sizeof(long)); } break; case sNMP_SYNTAX_INT32: { - long templong; - vars->type = (u_char) smival->syntax; - ACE_NEW(vars->val.integer, long); - vars->val_len = sizeof(long); - templong = (long) smival->value.sNumber; - ACE_OS::memcpy( (long*) vars->val.integer, - (long*) &templong, - sizeof(long)); + long templong; + vars->type = (u_char) smival->syntax; + ACE_NEW(vars->val.integer, long); + vars->val_len = sizeof(long); + templong = (long) smival->value.sNumber; + ACE_OS::memcpy( (long*) vars->val.integer, + (long*) &templong, + sizeof(long)); } break; // 64 bit counter case sNMP_SYNTAX_CNTR64: { - vars->type = ( u_char) smival->syntax; - ACE_NEW(vars->val.counter64, counter64); - vars->val_len = sizeof(struct counter64); - ACE_OS::memcpy( (struct counter64*) vars->val.counter64, - (SmiLPCNTR64) &(smival->value.hNumber), - sizeof( SmiCNTR64)); + vars->type = ( u_char) smival->syntax; + ACE_NEW(vars->val.counter64, counter64); + vars->val_len = sizeof(struct counter64); + ACE_OS::memcpy( (struct counter64*) vars->val.counter64, + (SmiLPCNTR64) &(smival->value.hNumber), + sizeof( SmiCNTR64)); } break; @@ -1134,11 +1134,11 @@ void cmu_snmp::add_var(struct snmp_pdu *pdu, // build the authentication // works for v1 or v2c u_char *cmu_snmp::auth_build( u_char *data, - int *length, - long int version, - u_char *community, - int community_len, - int messagelen) + int *length, + long int version, + u_char *community, + int community_len, + int messagelen) { ACE_TRACE("cmu_snmp::auth_build"); u_char *params; @@ -1147,32 +1147,32 @@ u_char *cmu_snmp::auth_build( u_char *data, params = community; plen = community_len; - data = asn1::build_sequence(data, - length, - (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), - messagelen + plen + 5); - if (data == 0){ + data = asn1::build_sequence(data, + length, + (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), + messagelen + plen + 5); + if (data == NULL){ ASNERROR("buildheader"); - return 0; - } - data = asn1::build_int(data, - length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&version, - sizeof(version)); - if (data == 0){ + return NULL; + } + data = asn1::build_int(data, + length, + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), + (long *)&version, + sizeof(version)); + if (data == NULL){ ASNERROR("buildint"); - return 0; + return NULL; } - data = asn1::build_string(data, - length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), - params, - plen ); - if (data == 0){ + data = asn1::build_string(data, + length, + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), + params, + plen ); + if (data == NULL){ ASNERROR("buildstring"); - return 0; + return NULL; } return (u_char *)data; @@ -1180,11 +1180,11 @@ u_char *cmu_snmp::auth_build( u_char *data, // build a variable binding -u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name, - int *var_name_len, - u_char var_val_type, - int var_val_len, u_char *var_val, - int *listlength) +u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name, + int *var_name_len, + u_char var_val_type, + int var_val_len, u_char *var_val, + int *listlength) { ACE_TRACE("cmu_snmp::build_var_op"); @@ -1197,42 +1197,42 @@ u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name, data += 4; dummyLen -=4; if (dummyLen < 0) - return 0; + return NULL; headerLen = data - dataPtr; *listlength -= headerLen; data = asn1::build_objid( data, listlength, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), - var_name, *var_name_len); - if (data == 0) { + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), + var_name, *var_name_len); + if (data == NULL) { ASNERROR(""); - return 0; + return NULL; } // based on the type... switch(var_val_type) { case ASN_INTEGER: - data = asn1::build_int( data, listlength, var_val_type, (long *)var_val, - var_val_len); + data = asn1::build_int( data, listlength, var_val_type, (long *)var_val, + var_val_len); break; case SMI_GAUGE: case SMI_COUNTER: case SMI_TIMETICKS: case SMI_UINTEGER: - data = asn1::build_unsigned_int( data, - listlength, - var_val_type, - (u_long *)var_val, - var_val_len); + data = asn1::build_unsigned_int( data, + listlength, + var_val_type, + (u_long *)var_val, + var_val_len); break; case SMI_COUNTER64: - data = asn1::build_unsigned_int64(data, - listlength, - var_val_type, - (struct counter64 *)var_val, - var_val_len); + data = asn1::build_unsigned_int64(data, + listlength, + var_val_type, + (struct counter64 *)var_val, + var_val_len); break; case ASN_OCTET_STR: @@ -1240,12 +1240,12 @@ u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name, case SMI_OPAQUE: case SMI_NSAP: data = asn1::build_string(data, listlength, var_val_type, - var_val, var_val_len); + var_val, var_val_len); break; case ASN_OBJECT_ID: data = asn1::build_objid(data, listlength, var_val_type, - (oid *)var_val, var_val_len / sizeof(oid)); + (oid *)var_val, var_val_len / sizeof(oid)); break; case ASN_NULL: @@ -1254,7 +1254,7 @@ u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name, case ASN_BIT_STR: data = asn1::build_bitstring(data, listlength, var_val_type, - var_val, var_val_len); + var_val, var_val_len); break; case SNMP_NOSUCHOBJECT: @@ -1265,25 +1265,25 @@ u_char * cmu_snmp::build_var_op(u_char *data, oid * var_name, default: ASNERROR("wrong type"); - return 0; + return NULL; } - if (data == 0) { + if (data == NULL) { ASNERROR(""); - return 0; + return NULL; } dummyLen = (data - dataPtr) - headerLen; asn1::build_sequence(dataPtr, &dummyLen, - (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), - dummyLen); + (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), + dummyLen); return data; } // serialize the pdu -int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, - int *out_length, long version, - u_char* community, int community_len) +int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, + int *out_length, long version, + u_char* community, int community_len) { ACE_TRACE("cmu_snmp::build"); u_char buf[SNMP_MSG_LENGTH]; @@ -1295,22 +1295,22 @@ int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, length = *out_length; cp = packet; for(vp = pdu->variables; vp; vp = vp->next_variable) { - cp = cmu_snmp::build_var_op( cp, vp->name, - &vp->name_length, vp->type, - vp->val_len, (u_char *)vp->val.string, - &length); - if (cp == 0) + cp = cmu_snmp::build_var_op( cp, vp->name, + &vp->name_length, vp->type, + vp->val_len, (u_char *)vp->val.string, + &length); + if (cp == NULL) return -1; } totallength = cp - packet; length = SNMP_MSG_LENGTH; - + // encode the total len - cp = asn1::build_header( buf, &length, - (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), - totallength); - if (cp == 0) + cp = asn1::build_header( buf, &length, + (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR), + totallength); + if (cp == NULL) return -1; ACE_OS::memcpy( (char *)cp, (char *)packet,totallength); totallength += cp - buf; @@ -1318,80 +1318,80 @@ int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, length = *out_length; if (pdu->command != TRP_REQ_MSG) { - // request id - cp = asn1::build_int( packet, - &length, - (u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->reqid, - sizeof(pdu->reqid)); - if (cp == 0) + // request id + cp = asn1::build_int( packet, + &length, + (u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), + (long *)&pdu->reqid, + sizeof(pdu->reqid)); + if (cp == NULL) return -1; - // error status - cp = asn1::build_int(cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->errstat, sizeof(pdu->errstat)); - if (cp == 0) + // error status + cp = asn1::build_int(cp, + &length, + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), + (long *)&pdu->errstat, sizeof(pdu->errstat)); + if (cp == NULL) return -1; - // error index - cp = asn1::build_int(cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->errindex, sizeof(pdu->errindex)); - if (cp == 0) + // error index + cp = asn1::build_int(cp, + &length, + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), + (long *)&pdu->errindex, sizeof(pdu->errindex)); + if (cp == NULL) return -1; - } - else { // this is a trap message - - // enterprise - cp = asn1::build_objid( packet, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), - (oid *)pdu->enterprise, - pdu->enterprise_length); - if (cp == 0) + } + else { // this is a trap message + + // enterprise + cp = asn1::build_objid( packet, + &length, + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID), + (oid *)pdu->enterprise, + pdu->enterprise_length); + if (cp == NULL) return -1; - // agent-addr - cp = asn1::build_string(cp, - &length, - // HDN Fixed to use correct tag - (u_char)SMI_IPADDRESS, - //(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), - (u_char *)&pdu->agent_addr.sin_addr.s_addr, - sizeof(pdu->agent_addr.sin_addr.s_addr)); - if (cp == 0) + // agent-addr + cp = asn1::build_string(cp, + &length, + // HDN Fixed to use correct tag + (u_char)SMI_IPADDRESS, + //(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OCTET_STR), + (u_char *)&pdu->agent_addr.sin_addr.s_addr, + sizeof(pdu->agent_addr.sin_addr.s_addr)); + if (cp == NULL) return -1; - // generic trap - cp = asn1::build_int(cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->trap_type, - sizeof(pdu->trap_type)); - if (cp == 0) + // generic trap + cp = asn1::build_int(cp, + &length, + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), + (long *)&pdu->trap_type, + sizeof(pdu->trap_type)); + if (cp == NULL) return -1; - // specific trap - cp = asn1::build_int( cp, - &length, - (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->specific_type, - sizeof(pdu->specific_type)); - if (cp == 0) + // specific trap + cp = asn1::build_int( cp, + &length, + (u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), + (long *)&pdu->specific_type, + sizeof(pdu->specific_type)); + if (cp == NULL) return -1; - // timestamp - cp = asn1::build_int(cp, - &length, - // HDN Fixed to use correct tag - (u_char)SMI_TIMETICKS, - //(u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), - (long *)&pdu->time, - sizeof(pdu->time)); - if (cp == 0) + // timestamp + cp = asn1::build_int(cp, + &length, + // HDN Fixed to use correct tag + (u_char)SMI_TIMETICKS, + //(u_char )(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER), + (long *)&pdu->time, + sizeof(pdu->time)); + if (cp == NULL) return -1; } @@ -1402,11 +1402,11 @@ int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, totallength += cp - packet; length = SNMP_MSG_LENGTH; - cp = asn1::build_header(buf, - &length, - (u_char)pdu->command, - totallength); - if (cp == 0) + cp = asn1::build_header(buf, + &length, + (u_char)pdu->command, + totallength); + if (cp == NULL) return -1; if (length < totallength) return -1; @@ -1416,13 +1416,13 @@ int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, length = *out_length; - cp = cmu_snmp::auth_build( packet, - &length, - version, - community, - community_len, - totallength ); - if (cp == 0) + cp = cmu_snmp::auth_build( packet, + &length, + version, + community, + community_len, + totallength ); + if (cp == NULL) return -1; if ((*out_length - (cp - packet)) < totallength) return -1; @@ -1437,81 +1437,81 @@ int cmu_snmp::build( struct snmp_pdu *pdu, u_char *packet, // parse the authentication header u_char *cmu_snmp::auth_parse(u_char *data, int *length, u_char *sid, - int *slen, long *version) + int *slen, long *version) { ACE_TRACE("cmu_snmp::auth_parse"); u_char type; // get the type data = asn1::parse_header( data, length, &type); - if (data == 0){ + if (data == NULL){ ASNERROR("bad header"); - return 0; + return NULL; } if (type != (ASN_SEQUENCE | ASN_CONSTRUCTOR)) { ASNERROR("wrong auth header type"); - return 0; + return NULL; } // get the version data = asn1::parse_int(data, length, &type, version, sizeof(*version)); - if (data == 0) { + if (data == NULL) { ASNERROR("bad parse of version"); - return 0; + return NULL; } // get the community name data = asn1::parse_string(data, length, &type, sid, slen); - if (data == 0) { + if (data == NULL) { ASNERROR("bad parse of community"); - return 0; + return NULL; } return (u_char *)data; } -/* u_char *data, // IN - pointer to the start of object - oid *var_name, // OUT - object id of variable - int *var_name_len, // IN/OUT - length of variable name - u_char *var_val_type, // OUT - type of variable - (int or octet string) (one byte) - int *var_val_len, // OUT - length of variable +/* u_char *data, // IN - pointer to the start of object + oid *var_name, // OUT - object id of variable + int *var_name_len, // IN/OUT - length of variable name + u_char *var_val_type, // OUT - type of variable + (int or octet string) (one byte) + int *var_val_len, // OUT - length of variable u_char **var_val, // OUT - pointer to ASN1 encoded value of variable */ u_char * -cmu_snmp::parse_var_op( u_char *data, oid *var_name, - int *var_name_len, u_char *var_val_type, - int *var_val_len, u_char **var_val, +cmu_snmp::parse_var_op( u_char *data, oid *var_name, + int *var_name_len, u_char *var_val_type, + int *var_val_len, u_char **var_val, int *listlength) { ACE_TRACE("cmu_snmp::parse_var_op"); u_char var_op_type; - int var_op_len = *listlength; + int var_op_len = *listlength; u_char *var_op_start = data; data = asn1::parse_header(data, &var_op_len, &var_op_type); - if (data == 0){ + if (data == NULL){ ASNERROR(""); - return 0; + return NULL; } if (var_op_type != (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR)) - return 0; + return NULL; data = asn1::parse_objid(data, &var_op_len, &var_op_type, var_name, var_name_len); - if (data == 0) { + if (data == NULL) { ASNERROR(""); - return 0; + return NULL; } if (var_op_type != (u_char) (ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_OBJECT_ID)) - return 0; - *var_val = data; /* save pointer to this object */ + return NULL; + *var_val = data; /* save pointer to this object */ /* find out what type of object this is */ data = asn1::parse_header(data, &var_op_len, var_val_type); - if (data == 0) { + if (data == NULL) { ASNERROR(""); - return 0; + return NULL; } *var_val_len = var_op_len; data += var_op_len; @@ -1523,36 +1523,36 @@ cmu_snmp::parse_var_op( u_char *data, oid *var_name, // build a pdu from a data and length int cmu_snmp::parse( struct snmp_pdu *pdu, - u_char *data, - u_char *community_name, - u_long &community_len, - snmp_version &spp_version, - int length) + u_char *data, + u_char *community_name, + u_long &community_len, + snmp_version &spp_version, + int length) { ACE_TRACE("cmu_snmp::parse"); u_char msg_type; u_char type; u_char *var_val; long version; - int len, four; + int len, four; u_char community[256]; int community_length = 256; struct variable_list *vp = 0; - oid objid[MAX_NAME_LEN], *op; - - // authenticates message and returns length if valid - data = cmu_snmp::auth_parse(data, - &length, - community, - &community_length, - &version); - if (data == 0) + oid objid[MAX_NAME_LEN], *op; + + // authenticates message and returns length if valid + data = cmu_snmp::auth_parse(data, + &length, + community, + &community_length, + &version); + if (data == NULL) return -1; // copy the returned community name - ACE_OS::memcpy( (u_char *) community_name, - (u_char *) community, - community_length); + ACE_OS::memcpy( (u_char *) community_name, + (u_char *) community, + community_length); community_len = (long) community_length; if( version != SNMP_VERSION_1 && version != SNMP_VERSION_2C ) { @@ -1562,109 +1562,109 @@ int cmu_snmp::parse( struct snmp_pdu *pdu, spp_version = (snmp_version) version; - data = asn1::parse_header(data, - &length, - &msg_type); - if (data == 0) + data = asn1::parse_header(data, + &length, + &msg_type); + if (data == NULL) return -1; pdu->command = msg_type; if (pdu->command != TRP_REQ_MSG){ // get the rid - data = asn1::parse_int(data, - &length, &type, - (long *)&pdu->reqid, - sizeof(pdu->reqid)); - if (data == 0) + data = asn1::parse_int(data, + &length, &type, + (long *)&pdu->reqid, + sizeof(pdu->reqid)); + if (data == NULL) return -1; // get the error status - data = asn1::parse_int(data, - &length, - &type, - (long *)&pdu->errstat, - sizeof(pdu->errstat)); - if (data == 0) + data = asn1::parse_int(data, + &length, + &type, + (long *)&pdu->errstat, + sizeof(pdu->errstat)); + if (data == NULL) return -1; // get the error index - data = asn1::parse_int(data, - &length, - &type, - (long *)&pdu->errindex, - sizeof(pdu->errindex)); - if (data == 0) + data = asn1::parse_int(data, + &length, + &type, + (long *)&pdu->errindex, + sizeof(pdu->errindex)); + if (data == NULL) return -1; - } + } else { // is a trap // get the enterprise pdu->enterprise_length = MAX_NAME_LEN; - data = asn1::parse_objid(data, - &length, - &type, - objid, - &pdu->enterprise_length); - if (data == 0) + data = asn1::parse_objid(data, + &length, + &type, + objid, + &pdu->enterprise_length); + if (data == NULL) return -1; - ACE_NEW_RETURN(pdu->enterprise, + ACE_NEW_RETURN(pdu->enterprise, oid[pdu->enterprise_length*sizeof(oid)],-1); // fixed - ACE_OS::memcpy((char *)pdu->enterprise,(char *)objid, + ACE_OS::memcpy((char *)pdu->enterprise,(char *)objid, pdu->enterprise_length * sizeof(oid)); // get source address four = 4; - data = asn1::parse_string(data, &length, &type, - (u_char *)&pdu->agent_addr.sin_addr.s_addr, - &four); - if (data == 0) + data = asn1::parse_string(data, &length, &type, + (u_char *)&pdu->agent_addr.sin_addr.s_addr, + &four); + if (data == NULL) return -1; // get trap type - data = asn1::parse_int(data, &length, &type, (long *)&pdu->trap_type, - sizeof(pdu->trap_type)); - if (data == 0) + data = asn1::parse_int(data, &length, &type, (long *)&pdu->trap_type, + sizeof(pdu->trap_type)); + if (data == NULL) return -1; // trap type - data = asn1::parse_int(data, &length, &type, (long *)&pdu->specific_type, - sizeof(pdu->specific_type)); - if (data == 0) + data = asn1::parse_int(data, &length, &type, (long *)&pdu->specific_type, + sizeof(pdu->specific_type)); + if (data == NULL) return -1; // timestamp - data = asn1::parse_int(data, &length, &type, (long *)&pdu->time, + data = asn1::parse_int(data, &length, &type, (long *)&pdu->time, sizeof(pdu->time)); - if (data == 0) + if (data == NULL) return -1; } // get the vb list data = asn1::parse_header(data, &length, &type); - if (data == 0) + if (data == NULL) return -1; if (type != (u_char)(ASN_SEQUENCE | ASN_CONSTRUCTOR)) return -1; while((int)length > 0) { - if (pdu->variables == 0) { + if (pdu->variables == NULL) { ACE_NEW_RETURN(pdu->variables, variable_list, -1); vp = pdu->variables; } else { ACE_NEW_RETURN(vp->next_variable, variable_list, -1); vp = vp->next_variable; } - vp->next_variable = 0; - vp->val.string = 0; - vp->name = 0; + vp->next_variable = NULL; + vp->val.string = NULL; + vp->name = NULL; vp->name_length = MAX_NAME_LEN; - data = cmu_snmp::parse_var_op( data, objid, - &vp->name_length, &vp->type, - &vp->val_len, &var_val, - (int *)&length); - if (data == 0) + data = cmu_snmp::parse_var_op( data, objid, + &vp->name_length, &vp->type, + &vp->val_len, &var_val, + (int *)&length); + if (data == NULL) return -1; ACE_NEW_RETURN(op, oid[(unsigned)vp->name_length * sizeof(oid)], -1); @@ -1688,16 +1688,16 @@ int cmu_snmp::parse( struct snmp_pdu *pdu, ACE_NEW_RETURN(vp->val.counter64, counter64, -1); vp->val_len = sizeof(struct counter64); asn1::parse_unsigned_int64(var_val, &len, &vp->type, - (struct counter64 *)vp->val.counter64, - sizeof(*vp->val.counter64)); + (struct counter64 *)vp->val.counter64, + sizeof(*vp->val.counter64)); break; - + case ASN_OCTET_STR: case SMI_IPADDRESS: case SMI_OPAQUE: case SMI_NSAP: ACE_NEW_RETURN(vp->val.string, u_char[(unsigned)vp->val_len + 1], -1); - asn1::parse_string(var_val, &len, &vp->type, vp->val.string, + asn1::parse_string(var_val, &len, &vp->type, vp->val.string, &vp->val_len); break; @@ -1710,8 +1710,8 @@ int cmu_snmp::parse( struct snmp_pdu *pdu, // fixed ACE_OS::memcpy((char *)vp->val.objid, - (char *)objid, - vp->val_len * sizeof(oid)); + (char *)objid, + vp->val_len * sizeof(oid)); break; case SNMP_NOSUCHOBJECT: @@ -1726,3 +1726,4 @@ int cmu_snmp::parse( struct snmp_pdu *pdu, } return 0; } + |