From e7cdbab18bdd41515985d94a35e17d5252c536ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Tue, 11 Mar 1997 04:18:45 +0100
Subject: [PATCH] Fixed memory leak. Removed bogus optimization flags.

Rev: src/modules/_Crypto/cbc.c:1.5
Rev: src/modules/_Crypto/idea.c:1.9
Rev: src/modules/_Crypto/invert.c:1.5
Rev: src/modules/_Crypto/md2.c:1.2
Rev: src/modules/_Crypto/rc4.c:1.3
---
 src/modules/_Crypto/cbc.c    | 23 ++++++++++-------------
 src/modules/_Crypto/idea.c   | 15 +++++++--------
 src/modules/_Crypto/invert.c | 15 +++++++--------
 src/modules/_Crypto/md2.c    |  9 ++++-----
 src/modules/_Crypto/rc4.c    | 15 ++++++---------
 5 files changed, 34 insertions(+), 43 deletions(-)

diff --git a/src/modules/_Crypto/cbc.c b/src/modules/_Crypto/cbc.c
index b2d160f5cc..23d9172bc6 100644
--- a/src/modules/_Crypto/cbc.c
+++ b/src/modules/_Crypto/cbc.c
@@ -1,5 +1,5 @@
 /*
- * $Id: cbc.c,v 1.4 1997/02/12 06:09:54 nisse Exp $
+ * $Id: cbc.c,v 1.5 1997/03/11 03:12:59 nisse Exp $
  *
  * CBC (Cipher Block Chaining Mode) crypto module for Pike.
  *
@@ -182,7 +182,6 @@ static void f_set_encrypt_key(INT32 args)
   THIS->mode = 0;
   safe_apply(THIS->object, "set_encrypt_key", args);
   pop_stack();
-  this_object()->refs++;
   push_object(this_object());
 }
 
@@ -197,7 +196,6 @@ static void f_set_decrypt_key(INT32 args)
   THIS->mode = 1;
   safe_apply(THIS->object, "set_decrypt_key", args);
   pop_stack();
-  this_object()->refs++;
   push_object(this_object());
 }
 
@@ -215,7 +213,6 @@ static void f_set_iv(INT32 args)
     error("cbc->set_iv: argument incompatible with cipher blocksize\n");
   MEMCPY(THIS->iv, sp[-args].u.string->str, THIS->block_size);
   pop_n_elems(args);
-  this_object()->refs++;
   push_object(this_object());
 }
 
@@ -319,17 +316,17 @@ void MOD_INIT(cbc)(void)
   start_new_program();
   add_storage(sizeof(struct pike_crypto_cbc));
 
-  add_function("create", f_create, "function(program|object:void)", OPT_EXTERNAL_DEPEND);
+  add_function("create", f_create, "function(program|object:void)", 0);
 
-  add_function("query_block_size", f_query_block_size, "function(void:int)", OPT_TRY_OPTIMIZE);
-  add_function("query_key_length", f_query_key_length, "function(void:int)", OPT_TRY_OPTIMIZE);
+  add_function("query_block_size", f_query_block_size, "function(void:int)", 0);
+  add_function("query_key_length", f_query_key_length, "function(void:int)", 0);
 
-  add_function("set_encrypt_key", f_set_encrypt_key, "function(string:object)", OPT_SIDE_EFFECT);
-  add_function("set_decrypt_key", f_set_decrypt_key, "function(string:object)", OPT_SIDE_EFFECT);
-  add_function("set_iv", f_set_iv, "function(string:object)", OPT_SIDE_EFFECT);
-  add_function("crypt_block", f_crypt_block, "function(string:string)", OPT_EXTERNAL_DEPEND);
-  add_function("encrypt_block", f_encrypt_block, "function(string:string)", OPT_EXTERNAL_DEPEND);
-  add_function("decrypt_block", f_decrypt_block, "function(string:string)", OPT_EXTERNAL_DEPEND);
+  add_function("set_encrypt_key", f_set_encrypt_key, "function(string:object)", 0);
+  add_function("set_decrypt_key", f_set_decrypt_key, "function(string:object)", 0);
+  add_function("set_iv", f_set_iv, "function(string:object)", 0);
+  add_function("crypt_block", f_crypt_block, "function(string:string)", 0);
+  add_function("encrypt_block", f_encrypt_block, "function(string:string)", 0);
+  add_function("decrypt_block", f_decrypt_block, "function(string:string)", 0);
 
   set_init_callback(init_pike_crypto_cbc);
   set_exit_callback(exit_pike_crypto_cbc);
diff --git a/src/modules/_Crypto/idea.c b/src/modules/_Crypto/idea.c
index eed4aa31dc..e603f49cb9 100644
--- a/src/modules/_Crypto/idea.c
+++ b/src/modules/_Crypto/idea.c
@@ -1,5 +1,5 @@
 /*
- * $Id: idea.c,v 1.8 1997/02/12 06:10:15 nisse Exp $
+ * $Id: idea.c,v 1.9 1997/03/11 03:15:00 nisse Exp $
  *
  * IDEA crypto module for Pike
  *
@@ -96,7 +96,6 @@ static void f_set_encrypt_key(INT32 args)
   idea_expand(THIS, (unsigned char *)sp[-1].u.string->str);
   
   pop_n_elems(args);
-  this_object()->refs++;
   push_object(this_object());
 }
 
@@ -170,12 +169,12 @@ void MOD_INIT(idea)(void)
   start_new_program();
   add_storage(sizeof(INT16[IDEA_KEYLEN]));
 
-  add_function("name", f_name, "function(void:string)", OPT_TRY_OPTIMIZE);
-  add_function("query_block_size", f_query_block_size, "function(void:int)", OPT_TRY_OPTIMIZE);
-  add_function("query_key_length", f_query_key_length, "function(void:int)", OPT_TRY_OPTIMIZE);
-  add_function("set_encrypt_key", f_set_encrypt_key, "function(string:object)", OPT_SIDE_EFFECT);
-  add_function("set_decrypt_key", f_set_decrypt_key, "function(string:object)", OPT_SIDE_EFFECT);
-  add_function("crypt_block", f_crypt_block, "function(string:string)", OPT_EXTERNAL_DEPEND);
+  add_function("name", f_name, "function(void:string)", 0);
+  add_function("query_block_size", f_query_block_size, "function(void:int)", 0);
+  add_function("query_key_length", f_query_key_length, "function(void:int)", 0);
+  add_function("set_encrypt_key", f_set_encrypt_key, "function(string:object)", 0);
+  add_function("set_decrypt_key", f_set_decrypt_key, "function(string:object)", 0);
+  add_function("crypt_block", f_crypt_block, "function(string:string)", 0);
 
   set_init_callback(init_pike_crypto_idea);
   set_exit_callback(exit_pike_crypto_idea);
diff --git a/src/modules/_Crypto/invert.c b/src/modules/_Crypto/invert.c
index 0998603d90..7df44fc15d 100644
--- a/src/modules/_Crypto/invert.c
+++ b/src/modules/_Crypto/invert.c
@@ -1,5 +1,5 @@
 /*
- * $Id: invert.c,v 1.4 1997/02/12 06:10:18 nisse Exp $
+ * $Id: invert.c,v 1.5 1997/03/11 03:16:23 nisse Exp $
  *
  * INVERT crypto module for Pike
  *
@@ -86,7 +86,6 @@ static void f_set_key(INT32 args)
     error("Bad argument 1 to invert->set_key()\n");
   }
   pop_n_elems(args);
-  this_object()->refs++;
   push_object(this_object());
 }
 
@@ -148,12 +147,12 @@ void MOD_INIT(invert)(void)
   /* /precompiled/crypto/invert */
   start_new_program();
 
-  add_function("name", f_name, "function(void:string)", OPT_TRY_OPTIMIZE);
-  add_function("query_block_size", f_query_block_size, "function(void:int)", OPT_TRY_OPTIMIZE);
-  add_function("query_key_length", f_query_key_length, "function(void:int)", OPT_TRY_OPTIMIZE);
-  add_function("set_encrypt_key", f_set_key, "function(string:void)", OPT_SIDE_EFFECT);
-  add_function("set_decrypt_key", f_set_key, "function(string:void)", OPT_SIDE_EFFECT);
-  add_function("crypt_block", f_crypt_block, "function(string:string)", OPT_SIDE_EFFECT);
+  add_function("name", f_name, "function(void:string)", 0);
+  add_function("query_block_size", f_query_block_size, "function(void:int)", 0);
+  add_function("query_key_length", f_query_key_length, "function(void:int)", 0);
+  add_function("set_encrypt_key", f_set_key, "function(string:void)", 0);
+  add_function("set_decrypt_key", f_set_key, "function(string:void)", 0);
+  add_function("crypt_block", f_crypt_block, "function(string:string)", 0);
 
   set_init_callback(init_pike_crypto_invert);
   set_exit_callback(exit_pike_crypto_invert);
diff --git a/src/modules/_Crypto/md2.c b/src/modules/_Crypto/md2.c
index bc017e8e06..1414edd6cf 100644
--- a/src/modules/_Crypto/md2.c
+++ b/src/modules/_Crypto/md2.c
@@ -1,5 +1,5 @@
 /*
- * $Id: md2.c,v 1.1.1.1 1996/11/05 15:10:09 grubba Exp $
+ * $Id: md2.c,v 1.2 1997/03/11 03:16:36 nisse Exp $
  *
  * A pike module for getting access to some common cryptos.
  *
@@ -106,7 +106,6 @@ static void f_cast_to_string(INT32 args)
   }
 
   push_string(PIKE_MD2->string);
-  PIKE_MD2->string->refs++;
 }
 
 /* mixed cast(string) */
@@ -158,9 +157,9 @@ void init_md2_programs(void)
   start_new_program();
   add_storage(sizeof(struct pike_md2));
 
-  add_function("push", f_push, "function(string:void)", OPT_SIDE_EFFECT);
-  add_function("cast", f_cast, "function(string:mixed)", OPT_EXTERNAL_DEPEND);
-  add_function("cast_to_string", f_cast_to_string, "function(void:string)", OPT_EXTERNAL_DEPEND);
+  add_function("push", f_push, "function(string:void)", 0);
+  add_function("cast", f_cast, "function(string:mixed)", 0);
+  add_function("cast_to_string", f_cast_to_string, "function(void:string)", 0);
 
   set_init_callback(init_pike_md2);
   set_exit_callback(exit_pike_md2);
diff --git a/src/modules/_Crypto/rc4.c b/src/modules/_Crypto/rc4.c
index 5f6257ef80..12d8762950 100644
--- a/src/modules/_Crypto/rc4.c
+++ b/src/modules/_Crypto/rc4.c
@@ -64,7 +64,6 @@ static void f_set_key(INT32 args)
   rc4_set_key(THIS, (unsigned INT8 *) sp[-1].u.string->str, sp[-1].u.string->len);
 
   pop_n_elems(args);
-  this_object()->refs++;
   push_object(this_object());
 }
 
@@ -75,7 +74,7 @@ static void f_crypt(INT32 args)
   struct pike_string *s;
   
   if (args != 1) {
-    error("Wrong number of arguemnts to rc4->crypt()\n");
+    error("Wrong number of arguments to rc4->crypt()\n");
   }
   if (sp[-1].type != T_STRING) {
     error("Bad argument 1 to rc4->crypt()\n");
@@ -103,11 +102,11 @@ void MOD_INIT(rc4)(void)
   start_new_program();
   add_storage(sizeof(struct rc4_ctx));
 
-  add_function("name", f_name, "function(void:string)", OPT_TRY_OPTIMIZE);
-  add_function("query_key_length", f_query_key_length, "function(void:int)", OPT_TRY_OPTIMIZE);
-  add_function("set_encrypt_key", f_set_key, "function(string:object)", OPT_SIDE_EFFECT);
-  add_function("set_decrypt_key", f_set_key, "function(string:object)", OPT_SIDE_EFFECT);
-  add_function("crypt", f_crypt, "function(string:string)", OPT_EXTERNAL_DEPEND);
+  add_function("name", f_name, "function(void:string)", 0);
+  add_function("query_key_length", f_query_key_length, "function(void:int)", 0);
+  add_function("set_encrypt_key", f_set_key, "function(string:object)", 0);
+  add_function("set_decrypt_key", f_set_key, "function(string:object)", 0);
+  add_function("crypt", f_crypt, "function(string:string)", 0);
 
   set_init_callback(init_pike_rc4);
   set_exit_callback(exit_pike_rc4);
@@ -118,5 +117,3 @@ void MOD_INIT(rc4)(void)
 void MOD_EXIT(rc4)(void)
 {
 }
-
-
-- 
GitLab