Ethereal-dev: [Ethereal-dev] packet smb sanity fixes

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

From: Jeroen Ruigrok van der Werven <jruigrok@xxxxxxxxxxxxxxxx>
Date: Wed, 22 Nov 2000 18:31:06 +0100
Some code sanity fixes.

Expect more.

-- 
Jeroen Ruigrok van der Werven          VIA Net.Works The Netherlands
BSD: Technical excellence at its best  Network- and systemadministrator
	  D78D D0AD 244D 1D12 C9CA  7152 035C 1138 546A B867
I've come a long way from where I started, but I am not even close
to where I'm going...
diff -ruN ethereal/packet-smb-mailslot.c ethereal-new/packet-smb-mailslot.c
--- ethereal/packet-smb-mailslot.c	Sun Nov 19 09:54:06 2000
+++ ethereal-new/packet-smb-mailslot.c	Wed Nov 22 18:10:21 2000
@@ -141,14 +141,14 @@
  
 /*** Decide what dissector to call based upon the command value ***/
  
-  	if (strcmp(command, "BROWSE") == 0) { /* Decode a browse */
+  	if (command != NULL && strcmp(command, "BROWSE") == 0) { /* Decode a browse */
 
     		return dissect_mailslot_browse(pd, offset, fd, parent, tree,
     			si, max_data, SMB_offset, errcode, dirn, command,
     			DataOffset, DataCount);
   	}
 
-  	else if (strcmp(command, "LANMAN") == 0) {
+  	else if (command != NULL && strcmp(command, "LANMAN") == 0) {
 
     		return dissect_pipe_lanman(pd, offset, fd, parent, tree, si,
     			max_data, SMB_offset, errcode, dirn, command,
@@ -159,9 +159,10 @@
 /* NOTE: may need a look up list to check for the mailslot names passed	*/
 /*		by the logon request packet */
 	
-  	else if ((strncmp(command, "NET", strlen("NET")) == 0) 
-			|| (strcmp(command, "TEMP\\NETLOGON") == 0)
-			|| (strcmp(command, "MSSP") == 0)){
+  	else if (((command != NULL) &&
+		  strncmp(command, "NET", strlen("NET")) == 0) ||
+		 (strcmp(command, "TEMP\\NETLOGON") == 0) ||
+		 (strcmp(command, "MSSP") == 0)){
 
 		return dissect_smb_logon(pd, DataOffset, fd, parent, tree,
 			si, max_data, SMB_offset, errcode, dirn,
diff -ruN ethereal/packet-smb-pipe.c ethereal-new/packet-smb-pipe.c
--- ethereal/packet-smb-pipe.c	Mon Sep 11 18:16:03 2000
+++ ethereal-new/packet-smb-pipe.c	Wed Nov 22 18:10:21 2000
@@ -1231,7 +1231,7 @@
   if (!proto_is_protocol_enabled(proto_smb_lanman))
     return 0;
 
-  if (strcmp(command, "LANMAN") == 0) { /* Try to decode a LANMAN */
+  if (command != NULL && strcmp(command, "LANMAN") == 0) { /* Try to decode a LANMAN */
 
     return dissect_pipe_lanman(pd, offset, fd, parent, tree, si, max_data, SMB_offset, errcode, dirn, command, DataOffset, DataCount, ParameterOffset, ParameterCount);
 
diff -ruN ethereal/packet-smb.c ethereal-new/packet-smb.c
--- ethereal/packet-smb.c	Sun Nov 19 09:54:06 2000
+++ ethereal-new/packet-smb.c	Wed Nov 22 18:10:35 2000
@@ -9507,14 +9507,14 @@
   if (!TransactName)
 	  return;
 
-  TransactNameCopy = g_malloc(strlen(TransactName) + 1);
+  TransactNameCopy = g_malloc(TransactName ? strlen(TransactName) + 1 : 1);
 
   /* Should check for error here ... */
 
-  strcpy(TransactNameCopy, TransactName);
+  strcpy(TransactNameCopy, TransactName ? TransactName : "");
   if (TransactNameCopy[0] == '\\') {
     trans_type = TransactNameCopy + 1;  /* Skip the slash */
-    loc_of_slash = strchr(trans_type, '\\');
+    loc_of_slash = trans_type ? strchr(trans_type, '\\') : NULL;
   }
 
   if (loc_of_slash) {
@@ -9526,9 +9526,9 @@
     trans_cmd = NULL;
 
   if ((trans_cmd == NULL) ||
-      (((strcmp(trans_type, "MAILSLOT") != 0) ||
+      (((trans_type == NULL || strcmp(trans_type, "MAILSLOT") != 0) ||
        !dissect_mailslot_smb(pd, SetupAreaOffset, fd, parent, tree, si, max_data, SMB_offset, errcode, dirn, trans_cmd, SMB_offset + DataOffset, DataCount, SMB_offset + ParameterOffset, ParameterCount)) &&
-      ((strcmp(trans_type, "PIPE") != 0) ||
+      ((trans_type == NULL || strcmp(trans_type, "PIPE") != 0) ||
        !dissect_pipe_smb(pd, offset, fd, parent, tree, si, max_data, SMB_offset, errcode, dirn, trans_cmd, DataOffset, DataCount, ParameterOffset, ParameterCount)))) {
     
     if (ParameterCount > 0) {