[tor-commits] [obfsproxy/master] Fixed some memory leaks and did some style changes.

nickm at torproject.org nickm at torproject.org
Thu Jun 9 21:05:16 UTC 2011


commit 1c94e6df95fd8808bca3722fdcc9eba25d3bb0fb
Author: George Kadianakis <desnacked at gmail.com>
Date:   Sun May 29 23:28:53 2011 +0200

    Fixed some memory leaks and did some style changes.
---
 src/main.c            |   29 ++++++++++++++++++-----------
 src/network.c         |   12 +-----------
 src/protocol.c        |   26 +++++++++++++++-----------
 src/protocol.h        |    2 ++
 src/protocols/obfs2.c |    1 +
 5 files changed, 37 insertions(+), 33 deletions(-)

diff --git a/src/main.c b/src/main.c
index 68ea424..dffe210 100644
--- a/src/main.c
+++ b/src/main.c
@@ -19,11 +19,13 @@
 #define __attribute__(x)
 #endif
 
-static void usage(void) __attribute__((noreturn));
-
+/* The character that seperates multiple listeners in the cli */
 #define SEPERATOR "+"
+/* Totally arbitrary. */
 #define MAXPROTOCOLS 20
 
+static void usage(void) __attribute__((noreturn));
+
 /* protocol.c */
 extern char *supported_protocols[];
 extern int n_supported_protocols;
@@ -85,6 +87,8 @@ is_supported_protocol(const char *name) {
   return 0;
 }
 
+#define STUPID_BEAUTIFIER "===========================\n"
+
 int
 main(int argc, const char **argv)
 {
@@ -215,10 +219,11 @@ main(int argc, const char **argv)
   listener_t *temp_listener;
   int n_listeners=0;
   for (h=0;h<actual_protocols;h++) {
+
     if (n_protocols > 1) {
-      printf("===========================\n"
-             "Spawning listener %d!\n"
-             "===========================\n", h+1);
+      dbg((STUPID_BEAUTIFIER
+           "Spawning listener %d!\n"
+           STUPID_BEAUTIFIER, h+1));
     }
 
     temp_listener = listener_new(base, n_options_array[h], protocol_options[h]);
@@ -232,18 +237,18 @@ main(int argc, const char **argv)
       continue;
     }
     
-    printf("Succesfully created listener.\n");
+    dbg(("Succesfully created listener.\n"));
     listeners[n_listeners] = temp_listener;
     
     n_listeners++;
   }
 
   if (n_protocols > 1) {
-    printf("\n===========================\n"
-           "From the original %d protocols only %d were parsed from main.c. "
-           "In the end only %d survived.\n\nStarting up...\n"
-           "===========================\n", 
-           n_protocols, actual_protocols,n_listeners);
+    dbg((STUPID_BEAUTIFIER           
+         "From the original %d protocols only %d were parsed from main.c. "
+         "In the end only %d survived.\n\nStarting up...\n"
+         STUPID_BEAUTIFIER, 
+         n_protocols, actual_protocols,n_listeners));
   }
 
   /* run the event loop if at least a listener was created. */
@@ -258,3 +263,5 @@ main(int argc, const char **argv)
 
   return 0;
 }
+
+#undef STUPID_BEAUTIFIER
diff --git a/src/network.c b/src/network.c
index 1c4b853..3b3c2bf 100644
--- a/src/network.c
+++ b/src/network.c
@@ -71,23 +71,13 @@ listener_new(struct event_base *base,
   return lsn;
 }
 
-static void
-protocol_params_free(protocol_params_t *params)
-{
-  assert(params);
-
-  if (params->shared_secret)
-    free(params->shared_secret);
-  free(params);
-}
-
 void
 listener_free(listener_t *lsn)
 {
   if (lsn->listener)
     evconnlistener_free(lsn->listener);
   if (lsn->proto_params)
-    protocol_params_free(lsn->proto_params);
+    proto_params_free(lsn->proto_params);
   memset(lsn, 0xb0, sizeof(listener_t));
   free(lsn);
 }
diff --git a/src/protocol.c b/src/protocol.c
index b86bb5f..1c93150 100644
--- a/src/protocol.c
+++ b/src/protocol.c
@@ -43,20 +43,12 @@ proto_new(protocol_params_t *params) {
   if (!proto)
     return NULL;
 
-  proto->vtable = calloc(1, sizeof(struct protocol_vtable));
-  if (!proto->vtable)
-    return NULL;
-
-  if (params->proto == OBFS2_PROTOCOL) {
+  if (params->proto == OBFS2_PROTOCOL)
     proto->state = obfs2_new(proto, params);
-  } else if (params->proto == DUMMY_PROTOCOL) {
+  else if (params->proto == DUMMY_PROTOCOL)
     proto->state = dummy_new(proto, NULL);
-  }
 
-  if (proto->state)
-    return proto;
-  else
-    return NULL;
+  return proto->state ? proto : NULL;
 }
 
 int
@@ -93,4 +85,16 @@ proto_destroy(struct protocol_t *proto) {
 
   if (proto->vtable->destroy)
     proto->vtable->destroy(proto->state);
+
+  free(proto);
+}
+
+void
+proto_params_free(protocol_params_t *params)
+{
+  assert(params);
+
+  if (params->shared_secret)
+    free(params->shared_secret);
+  free(params);
 }
diff --git a/src/protocol.h b/src/protocol.h
index 0f45f22..0a7c452 100644
--- a/src/protocol.h
+++ b/src/protocol.h
@@ -52,6 +52,8 @@ int proto_handshake(struct protocol_t *proto, void *buf);
 int proto_send(struct protocol_t *proto, void *source, void *dest);
 int proto_recv(struct protocol_t *proto, void *source, void *dest);
 
+void proto_params_free(protocol_params_t *params);
+
 
 typedef struct protocol_vtable {
   /* Initialization function: Fills in the protocol vtable. */
diff --git a/src/protocols/obfs2.c b/src/protocols/obfs2.c
index 41a97aa..115337e 100644
--- a/src/protocols/obfs2.c
+++ b/src/protocols/obfs2.c
@@ -136,6 +136,7 @@ obfs2_init(int n_options, char **options,
     }
 
     return 1;
+
  err:
     usage();
     return -1;





More information about the tor-commits mailing list