aboutsummaryrefslogtreecommitdiffstats
path: root/tap-dcerpcstat.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-12-15 20:15:03 +0000
committerGuy Harris <guy@alum.mit.edu>2003-12-15 20:15:03 +0000
commit573fed2ea8a5dc8e8c5947c41f5875edcf7793c6 (patch)
tree73a79e6a8f359fd84353bd70b47c7bd72e29e2e7 /tap-dcerpcstat.c
parent5321986b038b7015fe90f7fae3f13a5f1d1950b9 (diff)
DCE RPC version numbers are unsigned - print them with "%u".
Do the same checks for negative and >255 version numbers in the Tethereal DCE RPC statistics tap that are done in the Ethereal tap. In the Ethereal tap, do those checks before looking up the protocol name. svn path=/trunk/; revision=9290
Diffstat (limited to 'tap-dcerpcstat.c')
-rw-r--r--tap-dcerpcstat.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/tap-dcerpcstat.c b/tap-dcerpcstat.c
index 1ef20c3fb5..237b737ca5 100644
--- a/tap-dcerpcstat.c
+++ b/tap-dcerpcstat.c
@@ -1,7 +1,7 @@
/* tap-dcerpcstat.c
* dcerpcstat 2002 Ronnie Sahlberg
*
- * $Id: tap-dcerpcstat.c,v 1.6 2003/09/03 10:10:17 sahlberg Exp $
+ * $Id: tap-dcerpcstat.c,v 1.7 2003/12/15 20:15:02 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -158,7 +158,7 @@ dcerpcstat_draw(void *prs)
#endif
printf("\n");
printf("===================================================================\n");
- printf("%s Version %d.%d RTT Statistics:\n", rs->prog, rs->ver&0xff,rs->ver>>8);
+ printf("%s Version %u.%u RTT Statistics:\n", rs->prog, rs->ver&0xff,rs->ver>>8);
printf("Filter: %s\n",rs->filter?rs->filter:"");
printf("Procedure Calls Min RTT Max RTT Avg RTT\n");
for(i=0;i<rs->num_procedures;i++){
@@ -194,6 +194,7 @@ dcerpcstat_init(char *optarg)
e_uuid_t uuid;
int d1,d2,d3,d40,d41,d42,d43,d44,d45,d46,d47;
int major, minor;
+ guint16 ver;
int pos=0;
char *filter=NULL;
GString *error_string;
@@ -219,18 +220,26 @@ dcerpcstat_init(char *optarg)
fprintf(stderr, "tethereal: invalid \"-z dcerpc,rtt,<uuid>,<major version>.<minor version>[,<filter>]\" argument\n");
exit(1);
}
-
+ if (major < 0 || major > 255) {
+ fprintf(stderr,"tethereal: dcerpcstat_init() Major version number %d is invalid - must be positive and <= 255\n", major);
+ exit(1);
+ }
+ if (minor < 0 || minor > 255) {
+ fprintf(stderr,"tethereal: dcerpcstat_init() Minor version number %d is invalid - must be positive and <= 255\n", minor);
+ exit(1);
+ }
+ ver = ((minor<<8)|(major&0xff));
rs=g_malloc(sizeof(rpcstat_t));
- rs->prog=dcerpc_get_proto_name(&uuid, (minor<<8)|(major&0xff) );
+ rs->prog=dcerpc_get_proto_name(&uuid, ver);
if(!rs->prog){
g_free(rs);
- fprintf(stderr,"tethereal: dcerpcstat_init() Protocol with uuid:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x v%d.%d not supported\n",uuid.Data1,uuid.Data2,uuid.Data3,uuid.Data4[0],uuid.Data4[1],uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],uuid.Data4[5],uuid.Data4[6],uuid.Data4[7],major,minor);
+ fprintf(stderr,"tethereal: dcerpcstat_init() Protocol with uuid:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x v%u.%u not supported\n",uuid.Data1,uuid.Data2,uuid.Data3,uuid.Data4[0],uuid.Data4[1],uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],uuid.Data4[5],uuid.Data4[6],uuid.Data4[7],major,minor);
exit(1);
}
- procs=dcerpc_get_proto_sub_dissector(&uuid, (minor<<8)|(major&0xff) );
+ procs=dcerpc_get_proto_sub_dissector(&uuid, ver);
rs->uuid=uuid;
- rs->ver=(minor<<8)|(major&0xff);
+ rs->ver=ver;
if(filter){
rs->filter=g_malloc(strlen(filter)+1);