diff options
author | Guy Harris <guy@alum.mit.edu> | 2000-08-20 09:07:16 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2000-08-20 09:07:16 +0000 |
commit | c1214ede33f670fa0df1e5f9baa6623c4f440c59 (patch) | |
tree | de40e0a0de14e7cbf048e9226c73e52c28d052f9 /packet-zebra.c | |
parent | 2f2614652aabaae2fddb38f5ad65f4c3e35c5353 (diff) |
Use "memset()" to zero byte arrays, and "memcpy" to copy into them.
When copying IPv4 or IPv6 addresses, copy the minimum of the number of
bytes in the source and the destination, so that if the prefix length is
bogus, we don't overwrite the buffer.
"tvb_get_ptr()" returns a "guint8 *"; give the variable to which its
value is assigned that type.
svn path=/trunk/; revision=2307
Diffstat (limited to 'packet-zebra.c')
-rw-r--r-- | packet-zebra.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/packet-zebra.c b/packet-zebra.c index 940f6c0383..02761b5e63 100644 --- a/packet-zebra.c +++ b/packet-zebra.c @@ -3,7 +3,7 @@ * * Jochen Friedrich <jochen@scram.de> * - * $Id: packet-zebra.c,v 1.2 2000/08/18 15:45:30 deniel Exp $ + * $Id: packet-zebra.c,v 1.3 2000/08/20 09:07:16 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -198,7 +198,7 @@ dissect_zebra_request(proto_tree *tree, gboolean request, tvbuff_t *tvb, guint32 prefix4; guint16 i; guint8 buffer6[16], prefixlen, message; - gpointer prefix, ptr; + guint8 *prefix; proto_item *ti; proto_tree *msg_tree; @@ -319,9 +319,8 @@ dissect_zebra_request(proto_tree *tree, gboolean request, tvbuff_t *tvb, prefix = tvb_get_ptr(tvb, offset, PSIZE(prefixlen)); prefix4 = 0; - ptr = (gpointer) &prefix4; - for (i=0; i< PSIZE(prefixlen); i++) - *(guint8*)ptr++ = *(guint8*)prefix++; + memcpy(&prefix4, prefix, + MIN(PSIZE(prefixlen), sizeof prefix4)); proto_tree_add_ipv4(tree, hf_zebra_prefix4, tvb, offset, PSIZE(prefixlen), prefix4); offset += PSIZE(prefixlen); @@ -397,10 +396,9 @@ dissect_zebra_request(proto_tree *tree, gboolean request, tvbuff_t *tvb, offset += 1; prefix = tvb_get_ptr(tvb, offset, PSIZE(prefixlen)); - for (i=0; i < 16; i++) buffer6[i] = 0; - ptr = (gpointer) buffer6; - for (i=0; i< PSIZE(prefixlen); i++) - *(guint8*)ptr++ = *(guint8*)prefix++; + memset(buffer6, '\0', sizeof buffer6); + memcpy(buffer6, prefix, + MIN(PSIZE(prefixlen), sizeof buffer6)); proto_tree_add_ipv6(tree, hf_zebra_prefix6, tvb, offset, PSIZE(prefixlen), buffer6); offset += PSIZE(prefixlen); |