apexsink: Use a union to avoid type-punning strict aliasing compiler warning.

This commit is contained in:
Jan Schmidt 2009-02-27 10:16:57 +00:00
parent 3ee87fa8f2
commit 4a046a08a3

View file

@ -231,7 +231,17 @@ gst_apexraop_connect (GstApExRAOP * con)
creq[GST_APEX_RAOP_SDP_DEFAULT_LENGTH],
hreq[GST_APEX_RAOP_HDR_DEFAULT_LENGTH], *req;
RSA *rsa;
guchar *mod, *exp, buf[4 + 8 + 16], rsakey[512];
guchar *mod, *exp, rsakey[512];
union gst_randbytes
{
struct asvals
{
gulong url_key;
guint64 conn_id;
guchar challenge[16];
} v;
guchar buf[4 + 8 + 16];
} randbuf;
gsize size;
struct sockaddr_in ioaddr;
socklen_t iolen;
@ -257,12 +267,9 @@ gst_apexraop_connect (GstApExRAOP * con)
sizeof (conn->ctrl_sd_in)) < 0)
return GST_RTSP_STS_DESTINATION_UNREACHABLE;
RAND_bytes (buf, sizeof (buf));
sprintf ((gchar *) conn->url_abspath, "%lu", *((gulong *) buf));
ac = g_base64_encode (buf + 12, 16);
g_strdel (ac, '=');
sprintf ((char *) conn->cid, "%08lx%08lx", *((gulong *) (buf + 4)),
*((gulong *) (buf + 8)));
RAND_bytes (randbuf.buf, sizeof (randbuf));
sprintf ((gchar *) conn->url_abspath, "%lu", randbuf.v.url_key);
sprintf ((char *) conn->cid, "%16" G_GINT64_MODIFIER "x", randbuf.v.conn_id);
RAND_bytes (conn->aes_ky, AES_BLOCK_SIZE);
RAND_bytes (conn->aes_iv, AES_BLOCK_SIZE);
@ -285,6 +292,9 @@ gst_apexraop_connect (GstApExRAOP * con)
getsockname (conn->ctrl_sd, (struct sockaddr *) &ioaddr, &iolen);
inet_ntop (AF_INET, &(ioaddr.sin_addr), inaddr, INET_ADDRSTRLEN);
ac = g_base64_encode (randbuf.v.challenge, 16);
g_strdel (ac, '=');
sprintf (creq,
"v=0\r\n"
"o=iTunes %s 0 IN IP4 %s\r\n"