[Openvas-commits] r1250 - in trunk/openvas-server: . openvasd

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Sun Aug 31 21:19:56 CEST 2008


Author: jan
Date: 2008-08-31 21:19:54 +0200 (Sun, 31 Aug 2008)
New Revision: 1250

Modified:
   trunk/openvas-server/ChangeLog
   trunk/openvas-server/openvasd/ntp_11.c
   trunk/openvas-server/openvasd/otp_1_0.c
   trunk/openvas-server/openvasd/otp_1_0.h
Log:
* openvasd/otp_1_0.c (otp_1_0_get_client_request): New method.

* openvasd/otp_1_0.h: Added proto for
otp_1_0_get_client_request and added client_request_t.

* openvasd/ntp_11.c (ntp_11_parse_input): Reorganized
parsing into a switch-case design. This simplified the code
and several memory leaks were eliminated.



Modified: trunk/openvas-server/ChangeLog
===================================================================
--- trunk/openvas-server/ChangeLog	2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/ChangeLog	2008-08-31 19:19:54 UTC (rev 1250)
@@ -1,3 +1,14 @@
+2008-08-31  Jan-Oliver Wagner <jan-oliver.wagner at intevation.de>
+
+	* openvasd/otp_1_0.c (otp_1_0_get_client_request): New method.
+
+	* openvasd/otp_1_0.h: Added proto for
+	otp_1_0_get_client_request and added client_request_t.
+
+	* openvasd/ntp_11.c (ntp_11_parse_input): Reorganized
+	parsing into a switch-case design. This simplified the code
+	and several memory leaks were eliminated.
+
 2008-08-30  Jan-Oliver Wagner <jan-oliver.wagner at intevation.de>
 
 	Start the otp 1.0 module with a first simple method.

Modified: trunk/openvas-server/openvasd/ntp_11.c
===================================================================
--- trunk/openvas-server/openvasd/ntp_11.c	2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/openvasd/ntp_11.c	2008-08-31 19:19:54 UTC (rev 1250)
@@ -79,6 +79,7 @@
  char * str;
  int input_len = strlen(input);
  char * orig = emalloc(input_len + 1);
+ int result = 1; /* default return value is 1 */
 
  strncpy(orig, input, input_len);
  
@@ -99,92 +100,88 @@
 
   if(input[strlen(input) - 1] == '\n')
 	input[strlen(input) - 1] = '\0';
-  
+
+  switch(otp_1_0_get_client_request(input)) {
+    case CREQ_ATTACHED_FILE:
+      ntp_11_recv_file(globals);
+      break;
+
+    case CREQ_LONG_ATTACK:
+      result = ntp_11_long_attack(globals, orig);
+      break;
+
+    case CREQ_NEW_ATTACK:
+      result = ntp_11_new_attack(globals, orig);
+      break;
+
+    case CREQ_OPENVAS_VERSION:
+      otp_1_0_server_openvas_version(globals);
+      break;
+
+    case CREQ_PLUGIN_INFO: {
+      char * t, *s;
+      t = strstr(&(str[1]), " <|> ");
+      if( t == NULL ) {
+        result = -1;
+        break;
+      }
+      s = t + 5;
+      plugin_send_infos(globals, atoi(s));
+      break;
+      }
+
+    case CREQ_PREFERENCES:
+      ntp_11_prefs(globals);
+      break;
+
+    case CREQ_RULES:
+      ntp_11_rules(globals);
+      break;
+
 #ifdef ENABLE_SAVE_TESTS
-  if(!strcmp(input, "SESSIONS_LIST")){
-  	ntp_11_list_sessions(globals);
-	efree(&orig);
-	return 1;
-	}
-  if(!strcmp(input, "SESSION_DELETE")) {
-  	ntp_11_delete_session(globals, orig);
-	efree(&orig);
-	return 1;
-	}
-	
-  if(!strcmp(input, "SESSION_RESTORE")) {
-  	 int n = ntp_11_restore_session(globals, orig);
-	 efree(&orig);
-	 return n;
-	}
-#endif
+    case CREQ_SESSIONS_LIST:
+      ntp_11_list_sessions(globals);
+      break;
 
-  if(!strcmp(input, "OPENVAS_VERSION")) {
-    otp_1_0_server_openvas_version(globals);
-    return 1;
-  }
+    case CREQ_SESSION_DELETE:
+      ntp_11_delete_session(globals, orig);
+      break;
 
-  if(!strcmp(input, "ATTACHED_FILE")) {
-  	ntp_11_recv_file(globals);
-	efree(&orig);
-	return 1;
-	}
-  if(!strcmp(input, "PLUGIN_INFO")) {
-  	char * t, *s;
-	t = strstr(&(str[1]), " <|> ");
-	if( t == NULL )
-		return -1;
+    case CREQ_SESSION_RESTORE:
+      result = ntp_11_restore_session(globals, orig);
+      break;
+#endif
 
-	s = t + 5;
-  	plugin_send_infos(globals, atoi(s));
-	return 1;
-	}
+    case CREQ_STOP_WHOLE_TEST:
+      log_write("Stopping the whole test (requested by client)");
+      hosts_stop_all();
+      result = NTP_STOP_WHOLE_TEST;
+      break;
 
-  if(!strcmp(input, "LONG_ATTACK")){
-  	int code = ntp_11_long_attack(globals, orig);
-	efree(&orig);
-	return code;
-	}
-  if(!strcmp(input, "PREFERENCES")){
-  	ntp_11_prefs(globals);
-	efree(&orig);
-        return 1;
-        }
-  if(!strcmp(input, "RULES")){
-  	ntp_11_rules(globals);
-	efree(&orig);
-        return 1;
-        }
-  if(!strcmp(input, "NEW_ATTACK")){
-	  	int n = ntp_11_new_attack(globals, orig);
-		efree(&orig);
-		return n;
+    case CREQ_STOP_ATTACK: {
+      char * t, *s;
+      char * user = (char*)arg_get_value(globals, "user");
+      s = str + 5;	
+      t = strstr(s, " <|> ");
+      if(t == NULL) {
+        result = -1;
+        break;
+      }
+      t[0] = '\0';
+      log_write("user %s : stopping attack against %s\n",  user, s);
+      hosts_stop_host(globals, s);
+      ntp_1x_timestamp_host_scan_interrupted(globals, s);
+      ntp_11_show_end(globals, s, 0);
+      break;
+      }
+
+    case CREQ_UNKNOWN:
+      break;
   }
-  if(!strcmp(input, "STOP_WHOLE_TEST")){
-  		log_write("Stopping the whole test (requested by client)");
-		hosts_stop_all();
-		efree(&orig);
-		return NTP_STOP_WHOLE_TEST;
-		}
-  if(!strcmp(input, "STOP_ATTACK")) {
-  		char * t, *s;
-		char * user = (char*)arg_get_value(globals, "user");
-		s = str + 5;	
-		t = strstr(s, " <|> ");
-		if(t == NULL)
-		 return -1;
-		t[0] = '\0';
-		log_write("user %s : stopping attack against %s\n",  user, s);
-		hosts_stop_host(globals, s);
-		ntp_1x_timestamp_host_scan_interrupted(globals, s);
-		ntp_11_show_end(globals, s, 0);
-		}
-		
-  efree(&orig);
-  return 1;
  }
+
  efree(&orig);
- return 1;
+ return(result);
 }
 
 static int 

Modified: trunk/openvas-server/openvasd/otp_1_0.c
===================================================================
--- trunk/openvas-server/openvasd/otp_1_0.c	2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/openvasd/otp_1_0.c	2008-08-31 19:19:54 UTC (rev 1250)
@@ -23,8 +23,35 @@
 *
 */
 
+#include <string.h>
+
 #include <corevers.h>
+#include <network.h>
 
+#include "otp_1_0.h"
+
+/* Find the enum identifier for the client request which is given
+ * as string.
+ */
+client_request_t otp_1_0_get_client_request(str)
+  char * str;
+{
+  if (!strcmp(str, "ATTACHED_FILE")) return(CREQ_ATTACHED_FILE);
+  if (!strcmp(str, "LONG_ATTACK")) return(CREQ_LONG_ATTACK);
+  if (!strcmp(str, "NEW_ATTACK")) return(CREQ_NEW_ATTACK);
+  if (!strcmp(str, "OPENVAS_VERSION")) return(CREQ_OPENVAS_VERSION);
+  if (!strcmp(str, "PLUGIN_INFO")) return(CREQ_PLUGIN_INFO);
+  if (!strcmp(str, "PREFERENCES")) return(CREQ_PREFERENCES);
+  if (!strcmp(str, "RULES")) return(CREQ_RULES);
+  if (!strcmp(str, "SESSIONS_LIST")) return(CREQ_SESSIONS_LIST);
+  if (!strcmp(str, "SESSION_DELETE")) return(CREQ_SESSION_DELETE);
+  if (!strcmp(str, "SESSION_RESTORE")) return(CREQ_SESSION_RESTORE);
+  if (!strcmp(str, "STOP_ATTACK")) return(CREQ_STOP_ATTACK);
+  if (!strcmp(str, "STOP_WHOLE_TEST")) return(CREQ_STOP_WHOLE_TEST);
+
+  return(CREQ_UNKNOWN);
+}
+
 /* Send server response OPENVAS_VERSION
  */
 void otp_1_0_server_openvas_version(globals)

Modified: trunk/openvas-server/openvasd/otp_1_0.h
===================================================================
--- trunk/openvas-server/openvasd/otp_1_0.h	2008-08-30 11:02:40 UTC (rev 1249)
+++ trunk/openvas-server/openvasd/otp_1_0.h	2008-08-31 19:19:54 UTC (rev 1250)
@@ -26,6 +26,24 @@
 #ifndef _OTP_1_0_H
 #define _OTP_1_0_H
 
+typedef enum {
+  CREQ_UNKNOWN,
+  CREQ_ATTACHED_FILE,
+  CREQ_LONG_ATTACK,
+  CREQ_NEW_ATTACK,
+  CREQ_OPENVAS_VERSION,
+  CREQ_PLUGIN_INFO,
+  CREQ_PREFERENCES,
+  CREQ_RULES,
+  CREQ_SESSIONS_LIST,
+  CREQ_SESSION_DELETE,
+  CREQ_SESSION_RESTORE,
+  CREQ_STOP_ATTACK,
+  CREQ_STOP_WHOLE_TEST
+} client_request_t;
+
+client_request_t otp_1_0_get_client_request(char *);
+
 void otp_1_0_server_openvas_version(struct arglist *);
 
 #endif



More information about the Openvas-commits mailing list