[File] [PATCH] Issue with libmagic and floating point exceptions

Vincent Mihalkovic vmihalko at redhat.com
Wed Dec 14 13:15:50 UTC 2022


The "Floating point exception (core dumped)" occurred when using libmagic
on software with floating point exceptions enabled (FE_INVALID).

Sample of what happens:
#include <stdio.h>
#include <math.h>
#include <fenv.h>

int feenableexcept(int);
int fedisableexcept(int);

main(int argc, char *argv[])
  union {
    int   i;
    float f;
  } u[2];
  u[0].i = -1;  // NaN
  u[1].f = 1;
  printf("%d\n", u[0].f < u[1].f);
  //printf("%d\n", isless(u[0].f, u[1].f));
  return 0;

$ gcc test.c -lm
$ ./a.out
Floating point exception (core dumped)

The proposed fix (by Paolo Andrade) added a simple check using macros
(__builtin_is{less,greater,unordered}) from math.h.

More detailed description in:

Vincent Mihalkovic
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.astron.com/pipermail/file/attachments/20221214/c707a2c6/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: floating-point-exception.patch
Type: text/x-patch
Size: 1313 bytes
Desc: not available
URL: <https://mailman.astron.com/pipermail/file/attachments/20221214/c707a2c6/attachment.bin>

More information about the File mailing list