static void sigabrt_handler_9(int sig) { (void) sig; signal(SIGABRT, sigabrt_handler_10); assert(sodium_base642bin(NULL, 1, NULL, 1, NULL, NULL, NULL, -1) == -1); exit(1); }
static flux_msg_t *encode_event (const char *topic, int flags, uint32_t rolemask, uint32_t userid, uint32_t seq, const char *src) { flux_msg_t *msg; void *dst = NULL; int saved_errno; if (!(msg = flux_msg_create (FLUX_MSGTYPE_EVENT))) goto error; if (flux_msg_set_topic (msg, topic) < 0) goto error; if (flux_msg_set_userid (msg, userid) < 0) goto error; if (flux_msg_set_rolemask (msg, rolemask) < 0) goto error; if (flux_msg_set_seq (msg, seq) < 0) goto error; if ((flags & FLUX_MSGFLAG_PRIVATE)) { if (flux_msg_set_private (msg) < 0) goto error; } if (src) { // optional payload int srclen = strlen (src); size_t dstlen = BASE64_DECODE_SIZE (srclen); if (!(dst = malloc (dstlen))) goto error; if (sodium_base642bin ((unsigned char *)dst, dstlen, src, srclen, NULL, &dstlen, NULL, sodium_base64_VARIANT_ORIGINAL) < 0) { errno = EPROTO; goto error; } if (flux_msg_set_payload (msg, dst, dstlen) < 0) { if (errno == EINVAL) errno = EPROTO; goto error; } } free (dst); return msg; error: saved_errno = errno; free (dst); flux_msg_destroy (msg); errno = saved_errno; return NULL; }