diff options
-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); |