[snmp] Fix asn_build calls to pass correct variable sizes (fixes 64-bit issues)

2006-09-26 Pierre-Yves Ritschard <pierre-yves@spootnik.org>

	* smux.c: (smux_open,smux_trap,smux_register) Fix various
	  asn_build_* calls to pass the proper length in the final
	  argument: use sizeof(<variable>) instead of sizeof(<type>),
	  since there were several inconsistencies between the actual
	  variable type and the size that was passed.  This should
	  fix some problems on 64-bit architectures where sizeof(int)
	  != sizeof(long).
This commit is contained in:
Andrew J. Schorr 2006-09-26 15:30:43 +00:00
parent 08c8367197
commit 965b83f9cc
2 changed files with 17 additions and 7 deletions

View File

@ -1,3 +1,13 @@
2006-09-26 Pierre-Yves Ritschard <pierre-yves@spootnik.org>
* smux.c: (smux_open,smux_trap,smux_register) Fix various
asn_build_* calls to pass the proper length in the final
argument: use sizeof(<variable>) instead of sizeof(<type>),
since there were several inconsistencies between the actual
variable type and the size that was passed. This should
fix some problems on 64-bit architectures where sizeof(int)
!= sizeof(long).
2006-08-25 Paul Jakma <paul.jakma@sun.com>
* thread.c: (general) Add support for monotonic clock, it may still

View File

@ -963,7 +963,7 @@ smux_open (int sock)
version = 0;
ptr = asn_build_int (ptr, &len,
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
&version, sizeof (u_long));
&version, sizeof (version));
/* SMUX connection oid. */
ptr = asn_build_objid (ptr, &len,
@ -1026,25 +1026,25 @@ smux_trap (oid *name, size_t namelen,
ptr = asn_build_string (ptr, &len,
(u_char)
(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_IPADDRESS),
(u_char *)&addr, sizeof (struct in_addr));
(u_char *)&addr, sizeof (addr));
/* Generic trap integer. */
val = SNMP_TRAP_ENTERPRISESPECIFIC;
ptr = asn_build_int (ptr, &len,
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
&val, sizeof (int));
&val, sizeof (val));
/* Specific trap integer. */
val = sptrap;
ptr = asn_build_int (ptr, &len,
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
&val, sizeof (int));
&val, sizeof (val));
/* Timeticks timestamp. */
val = 0;
ptr = asn_build_unsigned_int (ptr, &len,
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_TIMETICKS),
&val, sizeof (int));
&val, sizeof (val));
/* Variables. */
h1 = ptr;
@ -1148,13 +1148,13 @@ smux_register (int sock)
priority = -1;
ptr = asn_build_int (ptr, &len,
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
&priority, sizeof (u_long));
&priority, sizeof (priority));
/* Operation. */
operation = 2; /* Register R/W */
ptr = asn_build_int (ptr, &len,
(u_char)(ASN_UNIVERSAL | ASN_PRIMITIVE | ASN_INTEGER),
&operation, sizeof (u_long));
&operation, sizeof (operation));
if (debug_smux)
{