]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Allocate extra bytes to compensate for overreading in libavcodec
authorAndreas Öman <andreas@lonelycoder.com>
Mon, 25 Feb 2008 16:28:46 +0000 (16:28 +0000)
committerAndreas Öman <andreas@lonelycoder.com>
Mon, 25 Feb 2008 16:28:46 +0000 (16:28 +0000)
buffer.c

index 9daab0f270f12c7266301135ca6872317dd8d8a9..2188726c7d054b9a33a0bf245977ddd2d61792ad 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -131,7 +131,7 @@ pkt_alloc(void *data, size_t datalen, int64_t pts, int64_t dts)
   pkt = calloc(1, sizeof(th_pkt_t));
   pkt->pkt_payloadlen = datalen;
   if(datalen > 0) {
-    pkt->pkt_payload = malloc(datalen);
+    pkt->pkt_payload = malloc(datalen + FF_INPUT_BUFFER_PADDING_SIZE);
     if(data != NULL)
       memcpy(pkt->pkt_payload, data, datalen);
   }
@@ -159,7 +159,8 @@ pkt_copy(th_pkt_t *orig)
   pkt = malloc(sizeof(th_pkt_t));
   memcpy(pkt, orig, sizeof(th_pkt_t));
 
-  pkt->pkt_payload = malloc(pkt->pkt_payloadlen);
+  pkt->pkt_payload = malloc(pkt->pkt_payloadlen + 
+                           FF_INPUT_BUFFER_PADDING_SIZE);
   memcpy(pkt->pkt_payload, orig->pkt_payload, pkt->pkt_payloadlen);
 
   pkt->pkt_on_stream_queue = 0;
@@ -229,7 +230,8 @@ int
 pkt_load(th_pkt_t *pkt)
 {
   if(pkt->pkt_payload == NULL && pkt->pkt_storage != NULL) {
-    pkt->pkt_payload = malloc(pkt->pkt_payloadlen);
+    pkt->pkt_payload = malloc(pkt->pkt_payloadlen + 
+                             FF_INPUT_BUFFER_PADDING_SIZE);
     pread(pkt->pkt_storage->ts_fd, pkt->pkt_payload, pkt->pkt_payloadlen,
          pkt->pkt_storage_offset);
     storage_mem_enq(pkt);