terl / lazysodium-java

A Java implementation of the Libsodium crypto library. For the lazy dev.
https://github.com/terl/lazysodium-java/wiki
Mozilla Public License 2.0
134 stars 46 forks source link

libsodium.so can't be loaded on Raspberry Pi OS due to missing libssp.so.0 library #115

Closed tyilo closed 2 years ago

tyilo commented 2 years ago

Running ldd on the bundled armv6/libsodium.so from either version 5.1.1 or 5.1.2 of lazysodium yields:

$ ldd armv6/libsodium.so
    linux-vdso.so.1 (0xbed40000)
    /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0xb6f21000)
    libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6ef5000)
    libssp.so.0 => not found
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6da1000)
    /lib/ld-linux-armhf.so.3 (0xb6f8a000)

It is weird, because all the linux libraries for the other architectures doesn't depend on it:

$ readelf -a armv6/libsodium.so | grep 'Shared library'
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [libssp.so.0]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x00000001 (NEEDED)                     Shared library: [ld-linux-armhf.so.3]

$ readelf -a arm64/libsodium.so | grep 'Shared library'
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-aarch64.so.1]

$ readelf -a linux/libsodium.so | grep 'Shared library'
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x00000001 (NEEDED)                     Shared library: [ld-linux.so.2]

$ readelf -a linux64/libsodium.so | grep 'Shared library'
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]

Could you remove this dependency from the armv6 library?

tyilo commented 2 years ago

If you install libsodium using apt install libsodium23 on my Raspberry Pi, you also get a library that doesn't reference libssp.so:

$ ldd /usr/lib/arm-linux-gnueabihf/libsodium.so.23
    linux-vdso.so.1 (0xbef62000)
    /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0xb6f58000)
    libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6f2c000)
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6dd8000)
    /lib/ld-linux-armhf.so.3 (0xb6fc0000)