/* timestamp */
static struct json_object *timestamp(const struct afb_hookid *hookid)
{
+#if JSON_C_MAJOR_VERSION > 0 || JSON_C_MINOR_VERSION >= 12
char ts[50];
snprintf(ts, sizeof ts, "%llu.%06lu",
(long unsigned)((hookid->time.tv_nsec + 500) / 1000));
return json_object_new_double_s(0.0f, ts); /* the real value isn't used */
-#if 0
- return json_object_new_string(ts);
- return json_object_new_double_s(0f, ts); /* the real value isn't used */
+#else
+ return json_object_new_double((double)hookid->time.tv_sec +
+ (double)hookid->time.tv_nsec * .000000001);
#endif
}
{
char path[PATH_MAX], proc[100];
const char *key, *val;
+ ssize_t s;
if (result >= 0) {
snprintf(proc, sizeof proc, "/proc/self/fd/%d", result);
- readlink(proc, path, sizeof path);
+ s = readlink(proc, path, sizeof path);
+ path[s < 0 ? 0 : s >= sizeof path ? sizeof path - 1 : s] = 0;
key = "path";
val = path;
} else {
{
char path[PATH_MAX], proc[100];
const char *key, *val;
+ ssize_t s;
if (result >= 0) {
snprintf(proc, sizeof proc, "/proc/self/fd/%d", result);
- readlink(proc, path, sizeof path);
+ s = readlink(proc, path, sizeof path);
+ path[s < 0 ? 0 : s >= sizeof path ? sizeof path - 1 : s] = 0;
key = "path";
val = path;
} else {
va_start(ap, format);
emit(closure, hookid, "session", "{ss ss}", format, ap,
- "uuid", session,
+ "uuid", afb_session_uuid(session),
"action", action);
va_end(ap);
}
wrap_json_optarray_for_all(event, add_evt_flags, &desc);
if (session)
- wrap_json_optarray_for_all(event, add_session_flags, &desc);
+ wrap_json_optarray_for_all(session, add_session_flags, &desc);
if (global)
wrap_json_optarray_for_all(global, add_global_flags, &desc);