Fwd: static link segmentation fault

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fwd: static link segmentation fault

JD H
 Hi:
I static compile opensslv1.1.1 on Ubuntu18.04 as follow :
  $./config no-shared
and then:
  $make 
  $make install
after that, I write a test.c like this:

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <openssl/err.h>
#include <openssl/bn.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/crypto.h>
#include <ctype.h>
#include <stdlib.h>
#include <unistd.h>

int generate_key(int bits, int count)
{
    int             ret = 0;
    RSA             *r = NULL;
    BIGNUM          *bne = NULL;
    unsigned long   e = RSA_F4;


    fprintf(stdout, "id;n;e;p;q;d;t\n");

    for (int i = 0; i < count; i++) {
        bne = BN_new();
        ret = BN_set_word(bne,e);


        r = RSA_new();
        ret = RSA_generate_key_ex(r, bits, bne, NULL);
    }  

    return (ret == 1);
}

// added main function
int main (){
    printf("Hello\n");
    return 0;
}

and static compile it as follow:
  $gcc -static -o test test.c -lssl -lcrypto -ldl -pthread
   x86_64-linux-gnu/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
   dso_dlfcn.c:(.text+0x11): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
   libcrypto.a(b_addr.o): In function `BIO_lookup_ex':
b_addr.c:(.text+0xcea): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
   x86_64-linux-gnu/libcrypto.a(b_sock.o): In function `BIO_gethostbyname':
   b_sock.c:(.text+0x71): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
when i exec the test:
  $./test
  [1]    36025 segmentation fault (core dumped)  ./test

Use gdb for debug:
 gdb-peda$ bt
 #0  0x0000000000000000 in ?? ()
 #1  0x00000000005a14e5 in __register_frame_info_bases.part.6 ()
 #2  0x000000000040168d in frame_dummy ()
 #3  0x0000000000000001 in ?? ()
 #4  0x00000000005a275c in __libc_csu_init ()
 #5  0x00000000005a1f27 in __libc_start_main ()
 #6  0x00000000004015aa in _start () 
  
So, how did i use openssl for static link?