summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew J. Schorr <ajschorr@alumni.princeton.edu>2006-09-26 15:30:43 +0000
committerAndrew J. Schorr <ajschorr@alumni.princeton.edu>2006-09-26 15:30:43 +0000
commit965b83f9cc287ca36f5a4152c2ac39007c5bc6d8 (patch)
tree1cfc447235d86ce273d37078d44da82ead4fd39d
parent08c8367197cb847eb88942e5d7273cf3352d967f (diff)
[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).
-rw-r--r--lib/ChangeLog10
-rw-r--r--lib/smux.c14
2 files changed, 17 insertions, 7 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 01f45ba5..00ba44e0 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -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
diff --git a/lib/smux.c b/lib/smux.c
index c9b7a880..1bec1209 100644
--- a/lib/smux.c
+++ b/lib/smux.c
@@ -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)
{