Advertisement
Guest User

Untitled

a guest
Apr 18th, 2018
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 1.44 KB | None | 0 0
  1. diff --git a/libavdevice/iec61883.c b/libavdevice/iec61883.c
  2. index 7d4d37847c..b09929eb56 100644
  3. --- a/libavdevice/iec61883.c
  4. +++ b/libavdevice/iec61883.c
  5. @@ -118,7 +118,7 @@ static int iec61883_callback(unsigned char *data, int length,
  6.          goto exit;
  7.      }
  8.  
  9. -    packet->buf = av_malloc(length);
  10. +    packet->buf = av_malloc(length + AV_INPUT_BUFFER_PADDING_SIZE);
  11.      if (!packet->buf) {
  12.          av_free(packet);
  13.          ret = -1;
  14. @@ -127,6 +127,7 @@ static int iec61883_callback(unsigned char *data, int length,
  15.      packet->len = length;
  16.  
  17.      memcpy(packet->buf, data, length);
  18. +    memset(packet->buf + length, 0, AV_INPUT_BUFFER_PADDING_SIZE);
  19.  
  20.      if (dv->queue_first) {
  21.          dv->queue_last->next = packet;
  22. @@ -200,13 +201,21 @@ static int iec61883_parse_queue_dv(struct iec61883_data *dv, AVPacket *pkt)
  23.      size = avpriv_dv_produce_packet(dv->dv_demux, pkt,
  24.                                      packet->buf, packet->len, -1);
  25.      dv->queue_first = packet->next;
  26. +    if (size < 0)
  27. +        av_free(packet->buf);
  28.      av_free(packet);
  29.      dv->packets--;
  30.  
  31. -    if (size > 0)
  32. -        return size;
  33. +    if (size < 0)
  34. +        return -1;
  35.  
  36. -    return -1;
  37. +    if (av_packet_from_data(pkt, pkt->data, pkt->size) < 0) {
  38. +        av_freep(&pkt->data);
  39. +        av_packet_unref(pkt);
  40. +        return -1;
  41. +    }
  42. +
  43. +    return size;
  44.  }
  45.  
  46.  static int iec61883_parse_queue_hdv(struct iec61883_data *dv, AVPacket *pkt)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement