[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

jitterentropy-rngd woes on armel

[ jitterentropy-rngd maintainer Cc'ed ]


can please somebody check the armel jitterentropy-rngd package in
testing and unstable (1.2.1-2) on various arm platforms? Things look
really weird and I have no idea how to proceed.

Initial observation: On an old Seagate Dockstar (Feroceon 88FR131, armv5tel
CPU) running Debian bullseye (buster is fine), jitterentropy-rngd ("je-r")
fails to start:

    # jitterentropy-rngd
    Floating point exception

Using gdb:

    Program received signal SIGFPE, Arithmetic exception.
    0xb6fb6810 in raise () from /lib/arm-linux-gnueabi/libpthread.so.0
    (gdb) bt
    #0  0xb6fb6810 in raise () from /lib/arm-linux-gnueabi/libpthread.so.0
    #1  0x00404968 in __aeabi_ldiv0 ()
    #2  0x00402664 in sha3_update (ctx=0xbefff55c, in=0x404b50 <msg_256> "^", <incomplete sequence \326>, 
        inlen=3) at jitterentropy-base.c:567
    #3  0x00402d48 in sha3_tester () at jitterentropy-base.c:658
    #4  0x004038dc in jent_entropy_init () at jitterentropy-base.c:1387
    #5  0x00400ffc in alloc () at jitterentropy-rngd.c:666
    #6  main (argc=1, argv=0xbefff914) at jitterentropy-rngd.c:794

So this is most likely caused by

    size_t partial = ctx->msg_len % ctx->r;

Surprise however: In an armel bullseye chroot on both a Cubietruck
(armhf) and Raspberry Pi 4 (arm64), je-r just runs fine.

And running a rebuilt je-r on the Dockstar yields a completely different

    jitterentropy-rngd - Error: The initialization of CPU Jitter RNG failed with error code 11

Adding some debug print statements reveals this is caused from a fail in
sha3_tester, and indeed the computed hash is different. But the line
that initially caused trouble is passed.

Possibly unrelated, the gcc warnings (line number are a bit off)

    jitterentropy-base.c: In function ‘sha3_tester’:
    jitterentropy-base.c:311:25: warning: cast increases required alignment of target type [-Wcast-align]
      311 |  struct sha_ctx *name = (struct sha_ctx *) name ## _ctx_buf
          |                         ^
    jitterentropy-base.c:649:2: note: in expansion of macro ‘HASH_CTX_ON_STACK’
      649 |  HASH_CTX_ON_STACK(ctx);
          |  ^~~~~~~~~~~~~~~~~

don't look good but I fail to understand the root cause behind this.
Applying some #pragma pack made the warnings go away, the issue
remained, though.

Any idea?


Attachment: signature.asc
Description: PGP signature

Reply to: