X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=apps%2Fopenssl.c;h=4f61006b73bf95bf0bbb11f4709980fd44d044c6;hb=c29dbb9562f275485c1266af523cd5d59311d583;hp=748c6ce71a1d52d5c8a0d4717523f508a7ddda78;hpb=e290c7d4e02887cf3302e2902f08a14b8f1cf883;p=oweals%2Fopenssl.git diff --git a/apps/openssl.c b/apps/openssl.c index 748c6ce71a..4f61006b73 100644 --- a/apps/openssl.c +++ b/apps/openssl.c @@ -56,13 +56,10 @@ * [including the GNU Public Licence.] */ -#ifndef DEBUG -#undef DEBUG -#endif - #include #include #include +#define OPENSSL_C /* tells apps.h to use complete apps_startup() */ #include #include #include @@ -71,18 +68,11 @@ #include #include #define USE_SOCKETS /* needed for the _O_BINARY defs in the MS world */ -#define OPENSSL_C /* tells apps.h to use complete apps_startup() */ #include "apps.h" #include "progs.h" #include "s_apps.h" #include -/* -#ifdef WINDOWS -#include "bss_file.c" -#endif -*/ - static unsigned long MS_CALLBACK hash(FUNCTION *a); static int MS_CALLBACK cmp(FUNCTION *a,FUNCTION *b); static LHASH *prog_init(void ); @@ -90,15 +80,6 @@ static int do_cmd(LHASH *prog,int argc,char *argv[]); LHASH *config=NULL; char *default_config_file=NULL; -#ifdef DEBUG -static void sig_stop(int i) - { - char *a=NULL; - - *a='\0'; - } -#endif - /* Make sure there is only one when MONOLITH is defined */ #ifdef MONOLITH BIO *bio_err=NULL; @@ -120,15 +101,8 @@ int main(int Argc, char *Argv[]) arg.data=NULL; arg.count=0; -#if defined(DEBUG) && !defined(WINDOWS) && !defined(MSDOS) -#ifdef SIGBUS - signal(SIGBUS,sig_stop); -#endif -#ifdef SIGSEGV - signal(SIGSEGV,sig_stop); -#endif -#endif - + if (getenv("OPENSSL_DEBUG_MEMORY") != NULL) + CRYPTO_malloc_debug_init(); CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); apps_startup(); @@ -229,18 +203,12 @@ end: config=NULL; } if (prog != NULL) lh_free(prog); - if (arg.data != NULL) Free(arg.data); + if (arg.data != NULL) OPENSSL_free(arg.data); ERR_remove_state(0); EVP_cleanup(); ERR_free_strings(); - -#ifdef LEVITTE_DEBUG - CRYPTO_push_info("Just to make sure I get a memory leak I can see :-)"); - (void)Malloc(1024); - CRYPTO_pop_info(); -#endif - + CRYPTO_mem_leaks(bio_err); if (bio_err != NULL) { @@ -267,6 +235,24 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) { ret=fp->func(argc,argv); } + else if ((strncmp(argv[0],"no-",3)) == 0) + { + BIO *bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); +#ifdef VMS + { + BIO *tmpbio = BIO_new(BIO_f_linebuffer()); + bio_stdout = BIO_push(tmpbio, bio_stdout); + } +#endif + f.name=argv[0]+3; + ret = (lh_retrieve(prog,&f) != NULL); + if (!ret) + BIO_printf(bio_stdout, "%s\n", argv[0]); + else + BIO_printf(bio_stdout, "%s\n", argv[0]+3); + BIO_free_all(bio_stdout); + goto end; + } else if ((strcmp(argv[0],"quit") == 0) || (strcmp(argv[0],"q") == 0) || (strcmp(argv[0],"exit") == 0) || @@ -289,11 +275,17 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */ list_type = FUNC_TYPE_CIPHER; bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); +#ifdef VMS + { + BIO *tmpbio = BIO_new(BIO_f_linebuffer()); + bio_stdout = BIO_push(tmpbio, bio_stdout); + } +#endif for (fp=functions; fp->name != NULL; fp++) if (fp->type == list_type) BIO_printf(bio_stdout, "%s\n", fp->name); - BIO_free(bio_stdout); + BIO_free_all(bio_stdout); ret=0; goto end; }