X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=apps%2Fopenssl.c;h=4f61006b73bf95bf0bbb11f4709980fd44d044c6;hb=c29dbb9562f275485c1266af523cd5d59311d583;hp=27073f51c3087293d0b241a4b522e936debef935;hpb=1ad9bdf253c7ce1568abeafd4aa3308bd6ca684c;p=oweals%2Fopenssl.git diff --git a/apps/openssl.c b/apps/openssl.c index 27073f51c3..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 @@ -70,19 +67,12 @@ #include #include #include -#define SSLEAY /* turn off a few special case MONOLITH macros */ #define USE_SOCKETS /* needed for the _O_BINARY defs in the MS world */ -#define SSLEAY_SRC #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,24 +101,16 @@ int main(int Argc, char *Argv[]) arg.data=NULL; arg.count=0; - /* SSLeay_add_ssl_algorithms(); is called in apps_startup() */ - apps_startup(); + if (getenv("OPENSSL_DEBUG_MEMORY") != NULL) + CRYPTO_malloc_debug_init(); + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); -#if defined(DEBUG) && !defined(WINDOWS) && !defined(MSDOS) -#ifdef SIGBUS - signal(SIGBUS,sig_stop); -#endif -#ifdef SIGSEGV - signal(SIGSEGV,sig_stop); -#endif -#endif + apps_startup(); if (bio_err == NULL) if ((bio_err=BIO_new(BIO_s_file())) != NULL) BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); - MemCheck_start() - ERR_load_crypto_strings(); /* Lets load up our environment a little */ @@ -165,7 +138,7 @@ int main(int Argc, char *Argv[]) program_name(Argv[0],pname,PROG_NAME_SIZE); f.name=pname; - fp=(FUNCTION *)lh_retrieve(prog,(char *)&f); + fp=(FUNCTION *)lh_retrieve(prog,&f); if (fp != NULL) { Argv[0]=pname; @@ -230,19 +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 - { - /* Just to make sure I get a memory leak I can see :-) */ - char *p = Malloc(1024); - } -#endif - + CRYPTO_mem_leaks(bio_err); if (bio_err != NULL) { @@ -264,11 +230,29 @@ static int do_cmd(LHASH *prog, int argc, char *argv[]) if ((argc <= 0) || (argv[0] == NULL)) { ret=0; goto end; } f.name=argv[0]; - fp=(FUNCTION *)lh_retrieve(prog,(char *)&f); + fp=(FUNCTION *)lh_retrieve(prog,&f); if (fp != NULL) { 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) || @@ -291,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; } @@ -363,7 +353,7 @@ static LHASH *prog_init(void) if ((ret=lh_new(hash,cmp)) == NULL) return(NULL); for (f=functions; f->name != NULL; f++) - lh_insert(ret,(char *)f); + lh_insert(ret,f); return(ret); } @@ -376,5 +366,3 @@ static unsigned long MS_CALLBACK hash(FUNCTION *a) { return(lh_strhash(a->name)); } - -#undef SSLEAY