[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).
diff --git a/lib/smux.c b/lib/smux.c
index c9b7a88..1bec120 100644
--- a/lib/smux.c
+++ b/lib/smux.c
@@ -963,7 +963,7 @@
   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 @@
   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 @@
       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)
         {