[Olsr-dev] jsoninfo segfault

Joe Ayers (spam-protected)
Tue Oct 17 07:56:41 CEST 2017


I''ve resolved a segfault in jsoninfo.  Any commands (bogus or valid)
to 9090 produced this result.  Is there a preferred way to address
this?  We could not reproduce on an x86 build.   The specifics are:

olsrv1:  0.9.6.2-git_8e32ff4-hash_cdaa6990297f6561cff31a78a3e5d4e6
openwrt:  Chaos Calmer r48676
architecture:   ar71xx (Ubiquiti AirMax line -- Failed on NSM2 XM,
bullet M2, NS M2 Loco, a couple others)
linux-3.18.29

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) bt
#0  0x00000000 in ?? ()
#1  0x77cae67a in abuf_json_float (session=0x77cc33b0 <json_session>,
abuf=<optimized out>, key=<optimized out>, value=0)
    at ../info/json_helpers.c:191
#2  0x77caa4b4 in ipc_print_links (abuf=0x77cc4420 <info_cache+32>) at
src/olsrd_jsoninfo.c:535
#3  0x77caf30a in send_info_from_table (abuf=<optimized out>,
send_what=<optimized out>, funcs=<optimized out>, funcsSize=<optimized
out>,
    outputLength=0x7fff6120) at ../info/olsrd_info.c:447
#4  0x77caf74c in send_info (req=<optimized out>,
add_headers=<optimized out>, send_what=16383, the_socket=<optimized
out>, status=200)
    at ../info/olsrd_info.c:516
#5  0x77cafdb4 in ipc_action (fd=<optimized out>, data=<optimized
out>, flags=<optimized out>) at ../info/olsrd_info.c:950
#6  0x0040b7e2 in poll_sockets () at src/scheduler.c:394
#7  0x0040c382 in olsr_scheduler () at src/scheduler.c:552
#8  0x00407fb2 in main (argc=<optimized out>, argv=<optimized out>) at
src/main.c:775
(gdb)

This resolves it:

*** a/lib/info/json_helpers.c
--- b/lib/info/json_helpers.c
*************** void abuf_json_int(struct json_session *
*** 187,192 ****
--- 187,194 ----
  }

  void abuf_json_float(struct json_session *session, struct autobuf
*abuf, const char* key, double value) {
+ #define isinf(x) __builtin_isinf(x)
+ #define isnan(x) __builtin_isnan(x)
    double v = value;
    int isInf = isinf(v);

Regards,
Joe (spam-protected)



More information about the Olsr-dev mailing list