]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
satip server: the data must for satip_rtp_tcp_data() must be allocated, fixes #4573
authorJaroslav Kysela <perex@perex.cz>
Thu, 14 Sep 2017 09:45:33 +0000 (11:45 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 18 Sep 2017 13:15:07 +0000 (15:15 +0200)
src/satip/rtp.c

index 2c4f8f3078b8be3c1e6357d107ac88d96fc27c14..cdb1abe437b26da18e6f1b94617a276cab015237 100644 (file)
@@ -885,7 +885,7 @@ satip_rtcp_thread(void *aux)
 {
   satip_rtp_session_t *rtp;
   int64_t us;
-  uint8_t msg[RTCP_PAYLOAD+1];
+  uint8_t msg[RTCP_PAYLOAD+1], *msg1;
   char addrbuf[50];
   int r, len, err;
 
@@ -910,8 +910,15 @@ satip_rtcp_thread(void *aux)
         tvhtrace(LS_SATIPS, "RTCP send to %s:%d : %s", addrbuf, ntohs(IP_PORT(rtp->peer2)), msg + 16);
       }
       if (rtp->port == RTSP_TCP_DATA) {
-        err = satip_rtp_tcp_data(rtp, 1, msg, len);
-        r = err ? -1 : 0;
+        msg1 = malloc(len);
+        if (msg1) {
+          memcpy(msg1, msg, len);
+          err = satip_rtp_tcp_data(rtp, 1, msg1, len);
+          r = err ? -1 : 0;
+        } else {
+          r = -1;
+          err = ENOMEM;
+        }
       } else {
         r = sendto(rtp->fd_rtcp, msg, len, 0,
                    (struct sockaddr*)&rtp->peer2,