diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-08-20 02:33:33 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2005-08-20 02:33:33 +0000 |
commit | a34e7e3d03b2458864e51561c3cdd57c7db8eb6b (patch) | |
tree | 7374f4f86471f544c344b41b3a95db4ac8066749 | |
parent | 20284888277ce20b5c5d76f4b7dad0a6a0e57940 (diff) |
removal of even more sprintf
svn path=/trunk/; revision=15457
-rw-r--r-- | epan/dissectors/packet-ber.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-per.c | 6 | ||||
-rw-r--r-- | epan/osi-utils.c | 68 | ||||
-rw-r--r-- | epan/osi-utils.h | 6 | ||||
-rw-r--r-- | epan/sna-utils.c | 10 | ||||
-rw-r--r-- | epan/sna-utils.h | 2 | ||||
-rw-r--r-- | epan/to_str.c | 72 | ||||
-rw-r--r-- | epan/to_str.h | 6 | ||||
-rw-r--r-- | epan/value_string.c | 4 | ||||
-rw-r--r-- | epan/xdlc.c | 14 |
10 files changed, 100 insertions, 94 deletions
diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c index 07e1ea5575..8fd6787381 100644 --- a/epan/dissectors/packet-ber.c +++ b/epan/dissectors/packet-ber.c @@ -69,6 +69,7 @@ #include <epan/strutil.h> #include <epan/to_str.h> #include <epan/prefs.h> +#include <epan/emem.h> #include "packet-ber.h" @@ -1554,9 +1555,10 @@ int dissect_ber_object_identifier(gboolean implicit_tag, packet_info *pinfo, pro gint32 tag; guint32 len; int eoffset; - char str[MAX_OID_STR_LEN], *name; + char *str, *name; proto_item *item; + str=ep_alloc(MAX_OID_STR_LEN); #ifdef DEBUG_BER { char *name; @@ -1595,7 +1597,7 @@ printf("OBJECT IDENTIFIER dissect_ber_object_identifier(%s) entered\n",name); eoffset=offset+len; } - oid_to_str_buf(tvb_get_ptr(tvb, offset, len), len, str); + oid_to_str_buf(tvb_get_ptr(tvb, offset, len), len, str, MAX_OID_STR_LEN); offset += len; if(hf_id != -1) { diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c index a95aa17043..590c5d773c 100644 --- a/epan/dissectors/packet-per.c +++ b/epan/dissectors/packet-per.c @@ -40,6 +40,7 @@ proper helper routines #include <epan/to_str.h> #include <epan/prefs.h> +#include <epan/emem.h> #include "packet-per.h" #include "packet-ber.h" @@ -584,19 +585,20 @@ guint32 dissect_per_object_identifier(tvbuff_t *tvb, guint32 offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index, char *value_string) { gint length; - char str[MAX_OID_STR_LEN], *name; + char *str, *name; proto_tree *etr=NULL; proto_item *item; DEBUG_ENTRY("dissect_per_object_identifier"); + str=ep_alloc(MAX_OID_STR_LEN); if(display_internal_per_fields){ etr=tree; } offset = dissect_per_length_determinant(tvb, offset, pinfo, etr, hf_per_object_identifier_length, &length); - oid_to_str_buf(tvb_get_ptr(tvb, offset>>3, length), length, str); + oid_to_str_buf(tvb_get_ptr(tvb, offset>>3, length), length, str, MAX_OID_STR_LEN); item = proto_tree_add_string(tree, hf_index, tvb, offset>>3, length, str); offset += 8 * length; diff --git a/epan/osi-utils.c b/epan/osi-utils.c index 95283d6bd0..79ecb2d8e4 100644 --- a/epan/osi-utils.c +++ b/epan/osi-utils.c @@ -42,35 +42,35 @@ print_nsap_net( const guint8 *ad, int length ) gchar *cur; cur = ep_alloc(MAX_NSAP_LEN * 3 + 50); - print_nsap_net_buf( ad, length, cur ); + print_nsap_net_buf( ad, length, cur, MAX_NSAP_LEN * 3 + 50); return( cur ); } void -print_nsap_net_buf( const guint8 *ad, int length, gchar *buf ) +print_nsap_net_buf( const guint8 *ad, int length, gchar *buf, int buf_len) { gchar *cur; /* to do : NSAP / NET decoding */ if ( (length <= 0 ) || ( length > MAX_NSAP_LEN ) ) { - sprintf( buf, "<Invalid length of NSAP>"); + g_snprintf(buf, buf_len, "<Invalid length of NSAP>"); return; } cur = buf; if ( ( length == RFC1237_NSAP_LEN ) || ( length == RFC1237_NSAP_LEN + 1 ) ) { - print_area_buf( ad, RFC1237_FULLAREA_LEN, cur ); + print_area_buf(ad, RFC1237_FULLAREA_LEN, cur, buf_len-(cur-buf)); cur += strlen( cur ); - print_system_id_buf( ad + RFC1237_FULLAREA_LEN, RFC1237_SYSTEMID_LEN, cur ); + print_system_id_buf( ad + RFC1237_FULLAREA_LEN, RFC1237_SYSTEMID_LEN, cur, buf_len-(cur-buf)); cur += strlen( cur ); - cur += sprintf( cur, "[%02x]", + cur += g_snprintf(cur, buf_len-(cur-buf), "[%02x]", ad[ RFC1237_FULLAREA_LEN + RFC1237_SYSTEMID_LEN ] ); if ( length == RFC1237_NSAP_LEN + 1 ) { - cur += sprintf( cur, "-%02x", ad[ length -1 ] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "-%02x", ad[ length -1 ] ); } } else { /* probably format as standard */ - print_area_buf( ad, length, buf ); + print_area_buf( ad, length, buf, buf_len); } } /* print_nsap */ @@ -80,18 +80,18 @@ print_system_id( const guint8 *ad, int length ) gchar *cur; cur = ep_alloc(MAX_SYSTEMID_LEN * 3 + 5); - print_system_id_buf(ad, length, cur ); + print_system_id_buf(ad, length, cur, MAX_SYSTEMID_LEN * 3 + 5); return( cur ); } void -print_system_id_buf( const guint8 *ad, int length, gchar *buf ) +print_system_id_buf( const guint8 *ad, int length, gchar *buf, int buf_len) { gchar *cur; int tmp; if ( ( length <= 0 ) || ( length > MAX_SYSTEMID_LEN ) ) { - sprintf( buf, "<Invalid length of SYSTEM ID>"); + g_snprintf(buf, buf_len, "<Invalid length of SYSTEM ID>"); return; } @@ -99,30 +99,30 @@ print_system_id_buf( const guint8 *ad, int length, gchar *buf ) if ( ( 6 == length ) || /* System-ID */ ( 7 == length ) || /* LAN-ID */ ( 8 == length )) { /* LSP-ID */ - cur += sprintf(cur, "%02x%02x.%02x%02x.%02x%02x", ad[0], ad[1], + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x%02x.%02x%02x.%02x%02x", ad[0], ad[1], ad[2], ad[3], ad[4], ad[5] ); if ( ( 7 == length ) || ( 8 == length )) { - cur += sprintf( cur, ".%02x", ad[6] ); + cur += g_snprintf(cur, buf_len-(cur-buf), ".%02x", ad[6] ); } if ( 8 == length ) { - cur += sprintf( cur, "-%02x", ad[7] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "-%02x", ad[7] ); } } else { tmp = 0; while ( tmp < length / 4 ) { /* 16 / 4 == 4 > four Octets left to print */ - cur += sprintf( cur, "%02x", ad[tmp++] ); - cur += sprintf( cur, "%02x", ad[tmp++] ); - cur += sprintf( cur, "%02x", ad[tmp++] ); - cur += sprintf( cur, "%02x.", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x.", ad[tmp++] ); } if ( 1 == tmp ) { /* Special case for Designated IS */ - sprintf( --cur, ".%02x", ad[tmp] ); + g_snprintf(--cur, buf_len-(cur-buf), ".%02x", ad[tmp] ); } else { for ( ; tmp < length; ) { /* print the rest without dot */ - cur += sprintf( cur, "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); } } } @@ -134,12 +134,12 @@ print_area(const guint8 *ad, int length) gchar *cur; cur = ep_alloc(MAX_AREA_LEN * 3 + 20); - print_area_buf( ad, length, cur ); + print_area_buf(ad, length, cur, MAX_AREA_LEN * 3 + 20); return cur; } void -print_area_buf(const guint8 *ad, int length, gchar *buf) +print_area_buf(const guint8 *ad, int length, gchar *buf, int buf_len) { gchar *cur; int tmp = 0; @@ -148,7 +148,7 @@ print_area_buf(const guint8 *ad, int length, gchar *buf) * and take away all these stupid resource consuming local statics */ if (length <= 0 || length > MAX_AREA_LEN) { - sprintf( buf, "<Invalid length of AREA>"); + g_snprintf(buf, buf_len, "<Invalid length of AREA>"); return; } @@ -163,36 +163,36 @@ print_area_buf(const guint8 *ad, int length, gchar *buf) ) { /* AFI is good and length is long enough */ if ( length > RFC1237_FULLAREA_LEN + 1 ) { /* Special Case Designated IS */ - sprintf( buf, "<Invalid length of AREA for DCC / GOSIP AFI>"); + g_snprintf(buf, buf_len, "<Invalid length of AREA for DCC / GOSIP AFI>"); return; } - cur += sprintf( cur, "[%02x|%02x:%02x][%02x|%02x:%02x:%02x|%02x:%02x]", + cur += g_snprintf(cur, buf_len-(cur-buf), "[%02x|%02x:%02x][%02x|%02x:%02x:%02x|%02x:%02x]", ad[0], ad[1], ad[2], ad[3], ad[4], ad[5], ad[6], ad[7], ad[8] ); - cur += sprintf( cur, "[%02x:%02x|%02x:%02x]", + cur += g_snprintf(cur, buf_len-(cur-buf), "[%02x:%02x|%02x:%02x]", ad[9], ad[10], ad[11], ad[12] ); if ( RFC1237_FULLAREA_LEN + 1 == length ) - sprintf( cur, "-[%02x]", ad[20] ); + g_snprintf(cur, buf_len-(cur-buf), "-[%02x]", ad[20] ); } else { /* print standard format */ if ( length == RFC1237_AREA_LEN ) { - sprintf( buf, "%02x.%02x%02x", ad[0], ad[1], ad[2] ); + g_snprintf(buf, buf_len, "%02x.%02x%02x", ad[0], ad[1], ad[2] ); return; } if ( 4 < length ) { while ( tmp < length / 4 ) { /* 16/4==4 > four Octets left to print */ - cur += sprintf( cur, "%02x", ad[tmp++] ); - cur += sprintf( cur, "%02x", ad[tmp++] ); - cur += sprintf( cur, "%02x", ad[tmp++] ); - cur += sprintf( cur, "%02x.", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x.", ad[tmp++] ); } if ( 1 == tmp ) { /* Special case for Designated IS */ - sprintf( --cur, "-%02x", ad[tmp] ); + g_snprintf(--cur, buf_len-(cur-buf), "-%02x", ad[tmp] ); } else { for ( ; tmp < length; ) { /* print the rest without dot */ - cur += sprintf( cur, "%02x", ad[tmp++] ); + cur += g_snprintf(cur, buf_len-(cur-buf), "%02x", ad[tmp++] ); } } } diff --git a/epan/osi-utils.h b/epan/osi-utils.h index bfdd30bba5..fc8565f032 100644 --- a/epan/osi-utils.h +++ b/epan/osi-utils.h @@ -48,10 +48,10 @@ #define NSAP_IDI_GOSIP2 0x47 gchar* print_nsap_net ( const guint8 *, int ); -void print_nsap_net_buf( const guint8 *, int, gchar * ); +void print_nsap_net_buf( const guint8 *, int, gchar *, int); gchar* print_area ( const guint8 *, int ); -void print_area_buf ( const guint8 *, int, gchar * ); +void print_area_buf ( const guint8 *, int, gchar *, int); gchar* print_system_id( const guint8 *, int ); -void print_system_id_buf( const guint8 *, int, gchar * ); +void print_system_id_buf( const guint8 *, int, gchar *, int); #endif /* __OSI_UTILS_H__ */ diff --git a/epan/sna-utils.c b/epan/sna-utils.c index 5b5888bb92..132a5cfe4b 100644 --- a/epan/sna-utils.c +++ b/epan/sna-utils.c @@ -40,29 +40,29 @@ sna_fid_to_str(const address *addr) gchar *cur; cur=ep_alloc(14); - sna_fid_to_str_buf(addr, cur); + sna_fid_to_str_buf(addr, cur, 14); return cur; } void -sna_fid_to_str_buf(const address *addr, gchar *buf) +sna_fid_to_str_buf(const address *addr, gchar *buf, int buf_len) { struct sna_fid_type_4_addr sna_fid_type_4_addr; switch (addr->len) { case 1: - sprintf(buf, "%04X", addr->data[0]); + g_snprintf(buf, buf_len, "%04X", addr->data[0]); break; case 2: - sprintf(buf, "%04X", pntohs(&addr->data[0])); + g_snprintf(buf, buf_len, "%04X", pntohs(&addr->data[0])); break; case SNA_FID_TYPE_4_ADDR_LEN: /* FID Type 4 */ memcpy(&sna_fid_type_4_addr, addr->data, SNA_FID_TYPE_4_ADDR_LEN); - sprintf(buf, "%08X.%04X", sna_fid_type_4_addr.saf, + g_snprintf(buf, buf_len, "%08X.%04X", sna_fid_type_4_addr.saf, sna_fid_type_4_addr.ef); break; } diff --git a/epan/sna-utils.h b/epan/sna-utils.h index d8125edb28..6f9b12c5e9 100644 --- a/epan/sna-utils.h +++ b/epan/sna-utils.h @@ -36,6 +36,6 @@ struct sna_fid_type_4_addr { }; extern gchar *sna_fid_to_str(const address *addr); -extern void sna_fid_to_str_buf(const address *addr, gchar *buf); +extern void sna_fid_to_str_buf(const address *addr, gchar *buf, int buf_len); #endif diff --git a/epan/to_str.c b/epan/to_str.c index 7c73091d62..3e00274fe0 100644 --- a/epan/to_str.c +++ b/epan/to_str.c @@ -243,10 +243,10 @@ ipx_addr_to_str(guint32 net, const guint8 *ad) name = get_ether_name_if_known(ad); if (name) { - sprintf(buf, "%s.%s", get_ipxnet_name(net), name); + g_snprintf(buf, 8+1+MAXNAMELEN+1, "%s.%s", get_ipxnet_name(net), name); } else { - sprintf(buf, "%s.%s", get_ipxnet_name(net), + g_snprintf(buf, 8+1+MAXNAMELEN+1, "%s.%s", get_ipxnet_name(net), bytestring_to_str(ad, 6, '\0')); } return buf; @@ -303,14 +303,14 @@ vines_addr_to_str(const guint8 *addrp) buf=ep_alloc(214); - vines_addr_to_str_buf(addrp, buf); + vines_addr_to_str_buf(addrp, buf, 214); return buf; } void -vines_addr_to_str_buf(const guint8 *addrp, gchar *buf) +vines_addr_to_str_buf(const guint8 *addrp, gchar *buf, int buf_len) { - sprintf(buf, "%08x.%04x", pntohl(&addrp[0]), pntohs(&addrp[4])); + g_snprintf(buf, buf_len, "%08x.%04x", pntohl(&addrp[0]), pntohs(&addrp[4])); } #define PLURALIZE(n) (((n) > 1) ? "s" : "") @@ -333,7 +333,7 @@ vines_addr_to_str_buf(const guint8 *addrp, gchar *buf) */ static void time_secs_to_str_buf(gint32 time, guint32 frac, gboolean is_nsecs, - gchar *buf) + gchar *buf, int buf_len) { static gchar *p; int hours, mins, secs; @@ -346,7 +346,7 @@ time_secs_to_str_buf(gint32 time, guint32 frac, gboolean is_nsecs, } if(time<0){ /* We've overflowed. */ - sprintf(buf, "Unable to cope with time value %d", time); + g_snprintf(buf, buf_len, "Unable to cope with time value %d", time); return; } @@ -360,28 +360,25 @@ time_secs_to_str_buf(gint32 time, guint32 frac, gboolean is_nsecs, /* This would probably be cleaner if we used GStrings instead. */ p = buf; if (time != 0) { - sprintf(p, "%s%u day%s", time?msign:"", time, PLURALIZE(time)); - p += strlen(p); + p += g_snprintf(p, buf_len, "%s%u day%s", time?msign:"", time, PLURALIZE(time)); do_comma = TRUE; } if (hours != 0) { - sprintf(p, "%s%s%u hour%s", COMMA(do_comma), hours?msign:"", hours, PLURALIZE(hours)); - p += strlen(p); + p += g_snprintf(p, buf_len-(p-buf), "%s%s%u hour%s", COMMA(do_comma), hours?msign:"", hours, PLURALIZE(hours)); do_comma = TRUE; } if (mins != 0) { - sprintf(p, "%s%s%u minute%s", COMMA(do_comma), mins?msign:"", mins, PLURALIZE(mins)); - p += strlen(p); + p += g_snprintf(p, buf_len-(p-buf), "%s%s%u minute%s", COMMA(do_comma), mins?msign:"", mins, PLURALIZE(mins)); do_comma = TRUE; } if (secs != 0 || frac != 0) { if (frac != 0) { if (is_nsecs) - sprintf(p, "%s%s%u.%09u seconds", COMMA(do_comma), msign, secs, frac); + p += g_snprintf(p, buf_len-(p-buf), "%s%s%u.%09u seconds", COMMA(do_comma), msign, secs, frac); else - sprintf(p, "%s%s%u.%03u seconds", COMMA(do_comma), msign, secs, frac); + p += g_snprintf(p, buf_len-(p-buf), "%s%s%u.%03u seconds", COMMA(do_comma), msign, secs, frac); } else - sprintf(p, "%s%s%u second%s", COMMA(do_comma), msign, secs, PLURALIZE(secs)); + p += g_snprintf(p, buf_len-(p-buf), "%s%s%u second%s", COMMA(do_comma), msign, secs, PLURALIZE(secs)); } } @@ -393,11 +390,11 @@ time_secs_to_str(gint32 time) buf=ep_alloc(TIME_SECS_LEN+1); if (time == 0) { - sprintf(buf, "0 time"); + g_snprintf(buf, TIME_SECS_LEN+1, "0 time"); return buf; } - time_secs_to_str_buf(time, 0, FALSE, buf); + time_secs_to_str_buf(time, 0, FALSE, buf, TIME_SECS_LEN+1); return buf; } @@ -410,7 +407,7 @@ time_msecs_to_str(gint32 time) buf=ep_alloc(TIME_SECS_LEN+1+3+1); if (time == 0) { - sprintf(buf, "0 time"); + g_snprintf(buf, TIME_SECS_LEN+1+3+1, "0 time"); return buf; } @@ -425,7 +422,7 @@ time_msecs_to_str(gint32 time) time /= 1000; } - time_secs_to_str_buf(time, msecs, FALSE, buf); + time_secs_to_str_buf(time, msecs, FALSE, buf, TIME_SECS_LEN+1+3+1); return buf; } @@ -454,7 +451,8 @@ abs_time_to_str(nstime_t *abs_time) tmp = localtime(&abs_time->secs); if (tmp) { - sprintf(buf, "%s %2d, %d %02d:%02d:%02d.%09ld", + g_snprintf(buf, 3+1+2+2+4+1+2+1+2+1+2+1+9+1, + "%s %2d, %d %02d:%02d:%02d.%09ld", mon_names[tmp->tm_mon], tmp->tm_mday, tmp->tm_year + 1900, @@ -477,7 +475,8 @@ abs_time_secs_to_str(time_t abs_time) tmp = localtime(&abs_time); if (tmp) { - sprintf(buf, "%s %2d, %d %02d:%02d:%02d", + g_snprintf(buf, 3+1+2+2+4+1+2+1+2+1+2+1, + "%s %2d, %d %02d:%02d:%02d", mon_names[tmp->tm_mon], tmp->tm_mday, tmp->tm_year + 1900, @@ -544,7 +543,7 @@ rel_time_to_str(nstime_t *rel_time) time = rel_time->secs; nsec = rel_time->nsecs; if (time == 0 && nsec == 0) { - sprintf(buf, "0.000000000 seconds"); + g_snprintf(buf, 1+TIME_SECS_LEN+1+6+1, "0.000000000 seconds"); return buf; } if (nsec < 0) { @@ -559,7 +558,7 @@ rel_time_to_str(nstime_t *rel_time) time = -rel_time->secs; } - time_secs_to_str_buf(time, nsec, TRUE, p); + time_secs_to_str_buf(time, nsec, TRUE, p, 1+TIME_SECS_LEN+1+6+1); return buf; } @@ -648,6 +647,7 @@ fcwwn_to_str (const guint8 *ad) /* Generate, into "buf", a string showing the bits of a bitfield. Return a pointer to the character after that string. */ +/*XXX this needs a buf_len check */ char * other_decode_bitfield_value(char *buf, guint32 val, guint32 mask, int width) { @@ -726,7 +726,7 @@ decode_numeric_bitfield(guint32 val, guint32 mask, int width, shift++; p = decode_bitfield_value(buf, val, mask, width); - sprintf(p, fmt, (val & mask) >> shift); + g_snprintf(p, 1025-(p-buf), fmt, (val & mask) >> shift); return buf; } @@ -772,17 +772,17 @@ address_to_str_buf(const address *addr, gchar *buf, int buf_len) g_snprintf(buf, buf_len, "%02x%02x%02x%02x.%02x%02x%02x%02x%02x%02x", addr->data[0], addr->data[1], addr->data[2], addr->data[3], addr->data[4], addr->data[5], addr->data[6], addr->data[7], addr->data[8], addr->data[9]); break; case AT_SNA: - sna_fid_to_str_buf(addr, buf); + sna_fid_to_str_buf(addr, buf, buf_len); break; case AT_ATALK: memcpy(&ddp_addr, addr->data, sizeof ddp_addr); atalk_addr_to_str_buf(&ddp_addr, buf, buf_len); break; case AT_VINES: - vines_addr_to_str_buf(addr->data, buf); + vines_addr_to_str_buf(addr->data, buf, buf_len); break; case AT_OSI: - print_nsap_net_buf(addr->data, addr->len, buf); + print_nsap_net_buf(addr->data, addr->len, buf, buf_len); break; case AT_ARCNET: g_snprintf(buf, buf_len, "0x%02X", addr->data[0]); @@ -814,10 +814,10 @@ gchar* oid_to_str(const guint8 *oid, gint oid_len) { gchar *buf; buf=ep_alloc(MAX_OID_STR_LEN); - return oid_to_str_buf(oid, oid_len, buf); + return oid_to_str_buf(oid, oid_len, buf, MAX_OID_STR_LEN); } -gchar* oid_to_str_buf(const guint8 *oid, gint oid_len, gchar *buf) { +gchar* oid_to_str_buf(const guint8 *oid, gint oid_len, gchar *buf, int buf_len) { gint i; guint8 byte; guint32 value; @@ -827,18 +827,18 @@ gchar* oid_to_str_buf(const guint8 *oid, gint oid_len, gchar *buf) { for (i=0; i<oid_len; i++){ byte = oid[i]; if ((bufp - buf) > (MAX_OID_STR_LEN - 16)) { /* "4294967295" + ".>>>" + '\0' + 1 */ - bufp += sprintf(bufp, ".>>>"); + bufp += g_snprintf(bufp, buf_len-(bufp-buf), ".>>>"); break; } if (i == 0) { - bufp += sprintf(bufp, "%u.%u", byte/40, byte%40); + bufp += g_snprintf(bufp, buf_len-(bufp-buf), "%u.%u", byte/40, byte%40); continue; } value = (value << 7) | (byte & 0x7F); if (byte & 0x80) { continue; } - bufp += sprintf(bufp, ".%u", value); + bufp += g_snprintf(bufp, buf_len-(bufp-buf), ".%u", value); value = 0; } *bufp = '\0'; @@ -850,11 +850,11 @@ gchar* guid_to_str(const guint8 *guid) { gchar *buf; buf=ep_alloc(GUID_STR_LEN); - return guid_to_str_buf(guid, buf); + return guid_to_str_buf(guid, buf, GUID_STR_LEN); } -gchar* guid_to_str_buf(const guint8 *guid, gchar *buf) { - sprintf(buf, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", +gchar* guid_to_str_buf(const guint8 *guid, gchar *buf, int buf_len) { + g_snprintf(buf, buf_len, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", guid[0], guid[1], guid[2], guid[3], guid[4], guid[5], guid[6], guid[7], diff --git a/epan/to_str.h b/epan/to_str.h index 3f49ea6178..e34a8242b5 100644 --- a/epan/to_str.h +++ b/epan/to_str.h @@ -62,7 +62,7 @@ extern gchar* ipx_addr_to_str(guint32, const guint8 *); extern gchar* ipxnet_to_string(const guint8 *ad); extern gchar* ipxnet_to_str_punct(const guint32 ad, char punct); extern gchar* vines_addr_to_str(const guint8 *addrp); -extern void vines_addr_to_str_buf(const guint8 *addrp, gchar *buf); +extern void vines_addr_to_str_buf(const guint8 *addrp, gchar *buf, int buf_len); extern gchar* time_secs_to_str(gint32); extern gchar* time_msecs_to_str(gint32); extern gchar* abs_time_to_str(nstime_t*); @@ -71,9 +71,9 @@ extern void display_signed_time(gchar *, int, gint32, gint32, time_res_t); extern gchar* rel_time_to_str(nstime_t*); extern gchar* rel_time_to_secs_str(nstime_t*); extern gchar* oid_to_str(const guint8*, gint); -extern gchar* oid_to_str_buf(const guint8*, gint, gchar*); +extern gchar* oid_to_str_buf(const guint8*, gint, gchar*, int); extern gchar* guid_to_str(const guint8*); -extern gchar* guid_to_str_buf(const guint8*, gchar*); +extern gchar* guid_to_str_buf(const guint8*, gchar*, int); extern char *other_decode_bitfield_value(char *buf, guint32 val, guint32 mask, diff --git a/epan/value_string.c b/epan/value_string.c index 62dc8d4c80..13fb307d6a 100644 --- a/epan/value_string.c +++ b/epan/value_string.c @@ -88,7 +88,7 @@ decode_enumerated_bitfield(guint32 val, guint32 mask, int width, char *p; p = decode_bitfield_value(buf, val, mask, width); - sprintf(p, fmt, val_to_str(val & mask, tab, "Unknown")); + g_snprintf(p, 1024-(p-buf), fmt, val_to_str(val & mask, tab, "Unknown")); return buf; } @@ -109,6 +109,6 @@ decode_enumerated_bitfield_shifted(guint32 val, guint32 mask, int width, shift++; p = decode_bitfield_value(buf, val, mask, width); - sprintf(p, fmt, val_to_str((val & mask) >> shift, tab, "Unknown")); + g_snprintf(p, 1024-(p-buf), fmt, val_to_str((val & mask) >> shift, tab, "Unknown")); return buf; } diff --git a/epan/xdlc.c b/epan/xdlc.c index d6fb3148ab..cb3c5af42f 100644 --- a/epan/xdlc.c +++ b/epan/xdlc.c @@ -33,6 +33,7 @@ #include <glib.h> #include <epan/packet.h> #include <epan/xdlc.h> +#include <epan/emem.h> const value_string ftype_vals[] = { { XDLC_I, "Information frame" }, @@ -182,11 +183,12 @@ dissect_xdlc_control(tvbuff_t *tvb, int offset, packet_info *pinfo, const xdlc_cf_items *cf_items; const char *control_format; guint16 poll_final; - char info[80]; + char *info; proto_tree *tc, *control_tree; const gchar *frame_type = NULL; const gchar *modifier; + info=ep_alloc(80); switch (tvb_get_guint8(tvb, offset) & 0x03) { case XDLC_S: @@ -223,7 +225,7 @@ dissect_xdlc_control(tvbuff_t *tvb, int offset, packet_info *pinfo, } if (is_extended) { poll_final = (control & XDLC_P_F_EXT); - sprintf(info, "S%s, func=%s, N(R)=%u", + g_snprintf(info, 80, "S%s, func=%s, N(R)=%u", (poll_final ? (is_response ? " F" : " P") : ""), @@ -231,7 +233,7 @@ dissect_xdlc_control(tvbuff_t *tvb, int offset, packet_info *pinfo, (control & XDLC_N_R_EXT_MASK) >> XDLC_N_R_EXT_SHIFT); } else { poll_final = (control & XDLC_P_F); - sprintf(info, "S%s, func=%s, N(R)=%u", + g_snprintf(info, 80, "S%s, func=%s, N(R)=%u", (poll_final ? (is_response ? " F" : " P") : ""), @@ -292,7 +294,7 @@ dissect_xdlc_control(tvbuff_t *tvb, int offset, packet_info *pinfo, u_modifier_short_vals_cmd, "Unknown"); } poll_final = (control & XDLC_P_F); - sprintf(info, "U%s, func=%s", + g_snprintf(info, 80, "U%s, func=%s", (poll_final ? (is_response ? " F" : " P") : ""), @@ -334,7 +336,7 @@ dissect_xdlc_control(tvbuff_t *tvb, int offset, packet_info *pinfo, cf_items = cf_items_ext; control_format = "Control field: %s (0x%04X)"; poll_final = (control & XDLC_P_F_EXT); - sprintf(info, "I%s, N(R)=%u, N(S)=%u", + g_snprintf(info, 80, "I%s, N(R)=%u, N(S)=%u", ((control & XDLC_P_F_EXT) ? " P" : ""), (control & XDLC_N_R_EXT_MASK) >> XDLC_N_R_EXT_SHIFT, (control & XDLC_N_S_EXT_MASK) >> XDLC_N_S_EXT_SHIFT); @@ -344,7 +346,7 @@ dissect_xdlc_control(tvbuff_t *tvb, int offset, packet_info *pinfo, cf_items = cf_items_nonext; control_format = "Control field: %s (0x%02X)"; poll_final = (control & XDLC_P_F); - sprintf(info, "I%s, N(R)=%u, N(S)=%u", + g_snprintf(info, 80, "I%s, N(R)=%u, N(S)=%u", ((control & XDLC_P_F) ? " P" : ""), (control & XDLC_N_R_MASK) >> XDLC_N_R_SHIFT, (control & XDLC_N_S_MASK) >> XDLC_N_S_SHIFT); |