aboutsummaryrefslogtreecommitdiffstats
path: root/packet-zebra.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2000-08-20 09:07:16 +0000
committerGuy Harris <guy@alum.mit.edu>2000-08-20 09:07:16 +0000
commitc1214ede33f670fa0df1e5f9baa6623c4f440c59 (patch)
treede40e0a0de14e7cbf048e9226c73e52c28d052f9 /packet-zebra.c
parent2f2614652aabaae2fddb38f5ad65f4c3e35c5353 (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.c16
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);