Ethereal-dev: Re: [Ethereal-dev] Fix for packet-cpha.c - question & a patch

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Yaniv Kaul <ykaul@xxxxxxxxxxxxxx>
Date: Mon, 02 Jun 2003 15:20:21 +0200
Forgot to add another version number (532). Please apply against 0.9.12 (disregard the patch below).
Thanks,
Y.

Yaniv Kaul wrote:
I've looked at the CVS and I saw that Guy fixed packet-cpha.c as follows:

Use the new dissector API, and check whether the magic number and
protocol version is OK and reject the packet if it's not, so that we
don't grab all packets on port 8116 even if they're, for example, ONC
RPC packets.

However, what this causes, in case of an unknown protocol version, that the packet is not dissected at all. There's no error or anything.
If the magic number is OK, but the protocol version is not, it should still output SOMETHING.

Of course, working in Check Point, I see from time to time 'unknown' protocol versions. ;-)

Attached please find a simplistic patch that makes sure version2str() always returns a non NULL value, therefore it'll always dissect, even if the protocol version is unknown (pending that the magic number is correct).
In addition, it adds two version numbers, 540 & 541.

Y.

--- packet-cpha.orig.c  2003-06-02 15:35:01.000000000 +0300
+++ packet-cpha.c       2003-06-02 15:46:04.000000000 +0300
@@ -238,7 +238,7 @@

  if (check_col(pinfo->cinfo, COL_INFO))
    col_add_fstr(pinfo->cinfo, COL_INFO, "CPHAv%d: %s",
-        g_ntohs(hdr.ha_protocol_ver), opcode2str_short(opcode));
+        hdr.ha_protocol_ver, opcode2str_short(opcode));

  if (tree) {
    ti = proto_tree_add_item(tree, proto_cphap, tvb, offset, -1, FALSE);
@@ -445,9 +445,17 @@
version2str(guint16 version) {
  switch(version) {
       case 1: return "4.1";
+               break;
       case 6: return "NG Feature Pack 2";
               break;
       case 530: return "NG Feature Pack 3";
+               break;
+       case 540: return "NG with Application Intelligence (Early Availability)"
+               break;
+       case 541: return "NG with Application Intelligence";
+               break;
+       default: return "Unknown Version";
+       break;
  }
  return NULL;
}



_______________________________________________ Ethereal-dev mailing list Ethereal-dev@xxxxxxxxxxxx http://www.ethereal.com/mailman/listinfo/ethereal-dev
--- packet-cpha.orig.c	2003-06-02 15:35:01.000000000 +0300
+++ packet-cpha.c	2003-06-02 17:21:48.000000000 +0300
@@ -238,7 +238,7 @@
 
   if (check_col(pinfo->cinfo, COL_INFO))
     col_add_fstr(pinfo->cinfo, COL_INFO, "CPHAv%d: %s",
-        g_ntohs(hdr.ha_protocol_ver), opcode2str_short(opcode));
+        hdr.ha_protocol_ver, opcode2str_short(opcode));
 
   if (tree) {
     ti = proto_tree_add_item(tree, proto_cphap, tvb, offset, -1, FALSE);
@@ -445,9 +445,19 @@
 version2str(guint16 version) {
   switch(version) {
 	case 1: return "4.1";
+		break;
 	case 6: return "NG Feature Pack 2";
 		break;
 	case 530: return "NG Feature Pack 3";
+		break;
+	case 532: return "NG Feature Pack 3, Hotfix 2";
+		break;
+	case 540: return "NG with Application Intelligence (Early Availability)";
+		break;
+	case 541: return "NG with Application Intelligence";
+		break;
+	default: return "Unknown Version";
+	break;	
   }
   return NULL;
 }