aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-pgm.c
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2006-01-20 21:18:18 +0000
committerJörg Mayer <jmayer@loplof.de>2006-01-20 21:18:18 +0000
commita052b3a98b5ddb839ad5c7bb22c8ed06cfca3f58 (patch)
tree016767623fc98e98b07e2c39e6ab1e27f4febf89 /epan/dissectors/packet-pgm.c
parent613d04a1ce869e9811eb13f4cf5a1a5b0bb5c632 (diff)
packet-bgp.c: Fix incorrect use of g_snprintf return value
mp_addr_to_str was unnecessary 'complex' - simplified it packet-dns.c: Fix incorrect use of g_snprintf return value packet-dcm.c: Fix incorrect use of g_snprintf return value Someone who understands the protocol should look at the "vr, tr might be used uninitialized..." warning. packet-x11.c: Fix incorrect use of g_snprintf return value packet-kerberos.c: Fix incorrect use of g_snprintf return value Someone should take a look at the "longjump might clobber ..." messages packet-diameter.c: Fix incorrect use of g_snprintf return value Get rid of unsigned < 0 check packet-pgm.c: Fix incorrect use of g_snprintf return value packet-nbns.c: Fix incorrect use of g_snprintf return value packet-winsrepl.c: Collateral damage to packet-nbns.c fix packet-netbios.c: Collateral damage to packet-nbns.c fix packet-netbios.h: Collateral damage to packet-nbns.c fix packet-kerberos.c: Collateral damage to packet-nbns.c fix packet-nbipx.c: Collateral damage to packet-nbns.c fix svn path=/trunk/; revision=17065
Diffstat (limited to 'epan/dissectors/packet-pgm.c')
-rw-r--r--epan/dissectors/packet-pgm.c45
1 files changed, 25 insertions, 20 deletions
diff --git a/epan/dissectors/packet-pgm.c b/epan/dissectors/packet-pgm.c
index 71990b7c8c..c66dbd80af 100644
--- a/epan/dissectors/packet-pgm.c
+++ b/epan/dissectors/packet-pgm.c
@@ -489,27 +489,30 @@ static const char *
optsstr(nchar_t opts)
{
char *msg;
- char *p;
-
- msg=ep_alloc(256);
- p=msg;
+ size_t returned_length, index = 0;
+ const int MAX_STR_LEN = 256;
+ msg=ep_alloc(MAX_STR_LEN);
if (opts == 0)
return("");
if (opts & PGM_OPT){
- p += g_snprintf(p, 256-(p-msg), "Present");
+ returned_length = g_snprintf(&msg[index], MAX_STR_LEN-index, "Present");
+ index += MIN(returned_length, MAX_STR_LEN-index);
}
if (opts & PGM_OPT_NETSIG){
- p += g_snprintf(p, 256-(p-msg), "%sNetSig", (p==msg)?"":",");
+ returned_length = g_snprintf(&msg[index], MAX_STR_LEN-index, "%sNetSig", (!index)?"":",");
+ index += MIN(returned_length, MAX_STR_LEN-index);
}
if (opts & PGM_OPT_VAR_PKTLEN){
- p += g_snprintf(p, 256-(p-msg), "%sVarLen", (p==msg)?"":",");
+ returned_length = g_snprintf(&msg[index], MAX_STR_LEN-index, "%sVarLen", (!index)?"":",");
+ index += MIN(returned_length, MAX_STR_LEN-index);
}
if (opts & PGM_OPT_PARITY){
- p += g_snprintf(p, 256-(p-msg), "%sParity", (p==msg)?"":",");
+ returned_length = g_snprintf(&msg[index], MAX_STR_LEN-index, "%sParity", (!index)?"":",");
+ index += MIN(returned_length, MAX_STR_LEN-index);
}
- if (p == msg) {
- p += g_snprintf(p, 256-(p-msg), "0x%x", opts);
+ if (!index) {
+ g_snprintf(&msg[index], MAX_STR_LEN-index, "0x%x", opts);
}
return(msg);
}
@@ -517,21 +520,23 @@ static const char *
paritystr(nchar_t parity)
{
char *msg;
- char *p;
+ size_t returned_length, index = 0;
+ const int MAX_STR_LEN = 256;
- msg=ep_alloc(256);
- p=msg;
+ msg=ep_alloc(MAX_STR_LEN);
if (parity == 0)
return("");
if (parity & PGM_OPT_PARITY_PRM_PRO){
- p += g_snprintf(p, 256-(p-msg), "Pro-active");
+ returned_length = g_snprintf(&msg[index], MAX_STR_LEN-index, "Pro-active");
+ index += MIN(returned_length, MAX_STR_LEN-index);
}
if (parity & PGM_OPT_PARITY_PRM_OND){
- p += g_snprintf(p, 256-(p-msg), "%sOn-demand", (p==msg)?"":",");
+ returned_length = g_snprintf(&msg[index], MAX_STR_LEN-index, "%sOn-demand", (!index)?"":",");
+ index += MIN(returned_length, MAX_STR_LEN-index);
}
- if (p == msg) {
- g_snprintf(p, 256-(p-msg), "%s0x%x", (p==msg)?"":" ", parity);
+ if (!index) {
+ g_snprintf(&msg[index], MAX_STR_LEN-index, "0x%x", parity);
}
return(msg);
}
@@ -767,15 +772,15 @@ dissect_pgmopts(tvbuff_t *tvb, int offset, proto_tree *tree,
naks = (optdata.len/sizeof(nlong_t));
nakbuf=ep_alloc(8192);
nakbuf[0]=0;
- soffset=0;
ptr = nakbuf;
j = 0;
/*
* Print out 8 per line
*/
for (i=0; i < naks; i++) {
- soffset += g_snprintf(nakbuf+soffset, 8192-soffset, "0x%lx ",
- (unsigned long)g_ntohl(naklist[i]));
+ soffset += MIN(8192-soffset,
+ g_snprintf(nakbuf+soffset, 8192-soffset, "0x%lx ",
+ (unsigned long)g_ntohl(naklist[i])));
if ((++j % 8) == 0) {
if (firsttime) {
proto_tree_add_bytes_format(opt_tree,