aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-isis-clv.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-08-30 08:47:25 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-08-30 08:47:25 +0000
commitd4c04e3c578ce8ca54422430ca5892a2adc7c517 (patch)
treec011cde4072dbd54afd3095734b938f4d44d6ef9 /epan/dissectors/packet-isis-clv.c
parent4d2b9df7e060753f8cbff73da6114b2964c526c7 (diff)
move an array off the stack into emem allocated memory
svn path=/trunk/; revision=15619
Diffstat (limited to 'epan/dissectors/packet-isis-clv.c')
-rw-r--r--epan/dissectors/packet-isis-clv.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/epan/dissectors/packet-isis-clv.c b/epan/dissectors/packet-isis-clv.c
index 6a889b967d..99a08630a1 100644
--- a/epan/dissectors/packet-isis-clv.c
+++ b/epan/dissectors/packet-isis-clv.c
@@ -266,7 +266,7 @@ isis_dissect_mt_clv(tvbuff_t *tvb, proto_tree *tree, int offset, int length,
int tree_id)
{
guint16 mt_block;
- char mt_desc[60];
+ char *mt_desc;
while (length>0) {
/* length can only be a multiple of 2, otherwise there is
@@ -278,22 +278,22 @@ isis_dissect_mt_clv(tvbuff_t *tvb, proto_tree *tree, int offset, int length,
/* mask out the lower 12 bits */
switch(mt_block&0x0fff) {
case 0:
- strcpy(mt_desc,"IPv4 unicast");
+ mt_desc="IPv4 unicast";
break;
case 1:
- strcpy(mt_desc,"In-Band Management");
+ mt_desc="In-Band Management";
break;
case 2:
- strcpy(mt_desc,"IPv6 unicast");
+ mt_desc="IPv6 unicast";
break;
case 3:
- strcpy(mt_desc,"Multicast");
+ mt_desc="Multicast";
break;
case 4095:
- strcpy(mt_desc,"Development, Experimental or Proprietary");
+ mt_desc="Development, Experimental or Proprietary";
break;
default:
- strcpy(mt_desc,"Reserved for IETF Consensus");
+ mt_desc="Reserved for IETF Consensus";
break;
}
proto_tree_add_uint_format ( tree, tree_id, tvb, offset, 2,
@@ -379,19 +379,20 @@ void
isis_dissect_ipv6_int_clv(tvbuff_t *tvb, proto_tree *tree, int offset,
int length, int tree_id)
{
- guint8 addr [16];
+ guint8 *addr;
if ( length <= 0 ) {
return;
}
+ addr=ep_alloc(16);
while ( length > 0 ) {
if ( length < 16 ) {
isis_dissect_unknown(tvb, tree, offset,
"Short IPv6 interface address (%d vs 16)",length );
return;
}
- tvb_memcpy(tvb, addr, offset, sizeof(addr));
+ tvb_memcpy(tvb, addr, offset, 16);
if ( tree ) {
proto_tree_add_ipv6(tree, tree_id, tvb, offset, 16, addr);
}