mark all block comments that need format preserving so that
[openssl.git] / engines / ccgost / gost_ctl.c
index e31e1f9..4b0fa19 100644 (file)
@@ -8,14 +8,17 @@
  **********************************************************************/            
 #include <stdlib.h>
 #include <string.h>
+#include <openssl/crypto.h>
+#include <openssl/err.h>
 #include <openssl/engine.h>
+#include <openssl/buffer.h>
 #include "gost_lcl.h"
 
 static char *gost_params[GOST_PARAM_MAX+1]={NULL};
 static const char *gost_envnames[]={"CRYPT_PARAMS"};
 const ENGINE_CMD_DEFN gost_cmds[]=
        {
-/*     { GOST_CTRL_RNG,
+/*-    { GOST_CTRL_RNG,
        "RNG",
        "Type of random number generator to use",
        ENGINE_CMD_FLAG_STRING
@@ -33,6 +36,17 @@ const ENGINE_CMD_DEFN gost_cmds[]=
 {0,NULL,NULL,0}
        };
 
+void gost_param_free() 
+{
+       int i;
+       for (i=0;i<=GOST_PARAM_MAX;i++) 
+               if (gost_params[i]!=NULL) 
+                       {
+                       OPENSSL_free(gost_params[i]);
+                       gost_params[i]=NULL;
+                       }
+               
+}
 
 int gost_control_func(ENGINE *e,int cmd,long i, void *p, void (*f)(void))
        {
@@ -54,7 +68,8 @@ const char *get_gost_engine_param(int param)
        tmp = getenv(gost_envnames[param]);
        if (tmp) 
                {
-               gost_params[param] = strdup(tmp);
+               if (gost_params[param]) OPENSSL_free(gost_params[param]);
+               gost_params[param] = BUF_strdup(tmp);
                return gost_params[param];
                }       
        return NULL;
@@ -67,8 +82,8 @@ int gost_set_default_param(int param, const char *value)
        tmp = getenv(gost_envnames[param]);
        /* if there is value in the environment, use it, else -passed string * */
        if (!tmp) tmp=value;
-       if (gost_params[param]) free(gost_params[param]);
-       gost_params[param] = strdup(tmp);
+       if (gost_params[param]) OPENSSL_free(gost_params[param]);
+       gost_params[param] = BUF_strdup(tmp);
 
        return 1;
        }