aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ospf.c
diff options
context:
space:
mode:
authorsahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2005-09-24 21:22:24 +0000
committersahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2005-09-24 21:22:24 +0000
commit64b85df39d04b53a5a296600934c45d87643b87d (patch)
treec0d0442ee2a8968f487105839f1aece38efe1a48 /epan/dissectors/packet-ospf.c
parentfc32bd3c99096c9969f94891326cd971d3a7cd68 (diff)
remove an array from the stack, remove some strcpy() and strcat() calls
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@15993 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-ospf.c')
-rw-r--r--epan/dissectors/packet-ospf.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/epan/dissectors/packet-ospf.c b/epan/dissectors/packet-ospf.c
index d4eb98d9c4..e7691b0cc6 100644
--- a/epan/dissectors/packet-ospf.c
+++ b/epan/dissectors/packet-ospf.c
@@ -2272,47 +2272,46 @@ static void dissect_ospf_v3_prefix_options(tvbuff_t *tvb, int offset, proto_tree
{
guint8 prefix_options;
- char prefix_options_string[11];
+ char *prefix_options_string;
guint8 position;
position=0;
prefix_options=tvb_get_guint8(tvb, offset);
- strcpy(prefix_options_string,"");
+#define OPT_STR_LEN 11
+ prefix_options_string=ep_alloc(OPT_STR_LEN);
+ prefix_options_string[0]=0;
if (prefix_options & OSPF_V3_PREFIX_OPTION_P) {
- strcat(prefix_options_string, "P");
- position++;
+ prefix_options_string[position++]='P';
}
if (prefix_options & OSPF_V3_PREFIX_OPTION_MC) {
if ( (position > 0) && (prefix_options_string[position-1] != '/') ) {
- strcat(prefix_options_string, "/");
- position++;
+ prefix_options_string[position++]='/';
}
- strcat(prefix_options_string, "MC");
- position+=2;
+ prefix_options_string[position++]='M';
+ prefix_options_string[position++]='C';
}
if (prefix_options & OSPF_V3_PREFIX_OPTION_LA) {
if ( (position > 0) && (prefix_options_string[position-1] != '/') ) {
- strcat(prefix_options_string, "/");
- position++;
+ prefix_options_string[position++]='/';
}
- strcat(prefix_options_string, "LA");
- position+=2;
+ prefix_options_string[position++]='L';
+ prefix_options_string[position++]='A';
}
if (prefix_options & OSPF_V3_PREFIX_OPTION_NU) {
if ( (position > 0) && (prefix_options_string[position-1] != '/') ) {
- strcat(prefix_options_string, "/");
- position++;
+ prefix_options_string[position++]='/';
}
- strcat(prefix_options_string, "NU");
+ prefix_options_string[position++]='N';
+ prefix_options_string[position++]='U';
}
- prefix_options_string[10]=0;
+ prefix_options_string[position]=0;
proto_tree_add_text(tree, tvb, offset, 1, "PrefixOptions: 0x%02x (%s)",prefix_options, prefix_options_string);