Skip to content

Commit

Permalink
Add additional OPENSSL_init() handling add dummy call to (hopefully)
Browse files Browse the repository at this point in the history
ensure OPENSSL_init() is always linked into an application.
  • Loading branch information
snhenson committed Apr 1, 2011
1 parent 3f74683 commit c4acfb1
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
10 changes: 9 additions & 1 deletion crypto/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,15 @@ alphacpuid.s: alphacpuid.pl
$(PERL) $< | $(CC) -E - | tee $@ > /dev/null

o_init.o: o_init.c
$(CC) $(CFLAGS) -c -o $@ $<
case "`(uname -s) 2>/dev/null`" in \
OSF1|IRIX*) _WL_INIT="-Wl,-init,OPENSSL_init" ;; \
HP-UX) _WL_INIT="-Wl,+init,OPENSSL_init" ;; \
AIX) _WL_INIT="-Wl,-binitfini:OPENSSL_init,-bnoobjreorder";; \
Darwin) ( while [ "x$1" != "x" -a "x$1" != "x-dynamiclib" ]; do shift; done; \
[ $# -ge 1 ] \
) && _WL_INIT="-Wl,-init,_OPENSSL_init" ;; \
esac ; \
$(CC) $(CFLAGS) $(_WL_INIT) -c -o $@ $<

testapps:
[ -z "$(THIS)" ] || ( if expr " $(SDIRS) " : ".* des " >/dev/null; \
Expand Down
2 changes: 0 additions & 2 deletions crypto/crypto.h
Original file line number Diff line number Diff line change
Expand Up @@ -560,8 +560,6 @@ unsigned int *OPENSSL_ia32cap_loc(void);
#define OPENSSL_ia32cap ((OPENSSL_ia32cap_loc())[0])
int OPENSSL_isservice(void);

void OPENSSL_init(void);

/* BEGIN ERROR CODES */
/* The following lines are auto generated by the script mkerr.pl. Any changes
* made after this point may be overwritten when the script is next run.
Expand Down
3 changes: 3 additions & 0 deletions crypto/mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,13 @@ static void (*set_debug_options_func)(long) = NULL;
static long (*get_debug_options_func)(void) = NULL;
#endif

extern void OPENSSL_init(void);

int CRYPTO_set_mem_functions(void *(*m)(size_t), void *(*r)(void *, size_t),
void (*f)(void *))
{
/* Dummy call just to ensure OPENSSL_init() gets linked in */
OPENSSL_init();
if (!allow_customize)
return 0;
if ((m == 0) || (r == 0) || (f == 0))
Expand Down
7 changes: 6 additions & 1 deletion crypto/o_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,12 @@

void OPENSSL_init(void)
{
static int done = 0;
if (done)
return;
done = 1;
#if 1
fprintf(stderr, "Called OPENSSL_init\n");
#endif
}


0 comments on commit c4acfb1

Please sign in to comment.