avio: Add const qualifiers to ffio_read_indirect

This provides at least some protection against potential accidental
corruption of AVIO buffer workspace.

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Ben Avison 2013-08-07 23:22:38 +01:00 committed by Martin Storsjö
parent 0f1fb6c019
commit 5afe1d2791
3 changed files with 6 additions and 6 deletions

View File

@ -52,7 +52,7 @@ int ffio_init_context(AVIOContext *s,
* will be a copy of buf * will be a copy of buf
* @return number of bytes read or AVERROR * @return number of bytes read or AVERROR
*/ */
int ffio_read_indirect(AVIOContext *s, unsigned char *buf, int size, unsigned char **data); int ffio_read_indirect(AVIOContext *s, unsigned char *buf, int size, const unsigned char **data);
/** /**
* Read size bytes from AVIOContext into buf. * Read size bytes from AVIOContext into buf.

View File

@ -490,7 +490,7 @@ int avio_read(AVIOContext *s, unsigned char *buf, int size)
return size1 - size; return size1 - size;
} }
int ffio_read_indirect(AVIOContext *s, unsigned char *buf, int size, unsigned char **data) int ffio_read_indirect(AVIOContext *s, unsigned char *buf, int size, const unsigned char **data)
{ {
if (s->buf_end - s->buf_ptr >= size && !s->write_flag) { if (s->buf_end - s->buf_ptr >= size && !s->write_flag) {
*data = s->buf_ptr; *data = s->buf_ptr;

View File

@ -1757,7 +1757,7 @@ static int mpegts_resync(AVFormatContext *s)
} }
/* return -1 if error or EOF. Return 0 if OK. */ /* return -1 if error or EOF. Return 0 if OK. */
static int read_packet(AVFormatContext *s, uint8_t *buf, int raw_packet_size, uint8_t **data) static int read_packet(AVFormatContext *s, uint8_t *buf, int raw_packet_size, const uint8_t **data)
{ {
AVIOContext *pb = s->pb; AVIOContext *pb = s->pb;
int len; int len;
@ -1793,7 +1793,7 @@ static int handle_packets(MpegTSContext *ts, int nb_packets)
{ {
AVFormatContext *s = ts->stream; AVFormatContext *s = ts->stream;
uint8_t packet[TS_PACKET_SIZE+FF_INPUT_BUFFER_PADDING_SIZE]; uint8_t packet[TS_PACKET_SIZE+FF_INPUT_BUFFER_PADDING_SIZE];
uint8_t *data; const uint8_t *data;
int packet_num, ret = 0; int packet_num, ret = 0;
if (avio_tell(s->pb) != ts->last_pos) { if (avio_tell(s->pb) != ts->last_pos) {
@ -1930,7 +1930,7 @@ static int mpegts_read_header(AVFormatContext *s)
int64_t pcrs[2], pcr_h; int64_t pcrs[2], pcr_h;
int packet_count[2]; int packet_count[2];
uint8_t packet[TS_PACKET_SIZE]; uint8_t packet[TS_PACKET_SIZE];
uint8_t *data; const uint8_t *data;
/* only read packets */ /* only read packets */
@ -1992,7 +1992,7 @@ static int mpegts_raw_read_packet(AVFormatContext *s,
int64_t pcr_h, next_pcr_h, pos; int64_t pcr_h, next_pcr_h, pos;
int pcr_l, next_pcr_l; int pcr_l, next_pcr_l;
uint8_t pcr_buf[12]; uint8_t pcr_buf[12];
uint8_t *data; const uint8_t *data;
if (av_new_packet(pkt, TS_PACKET_SIZE) < 0) if (av_new_packet(pkt, TS_PACKET_SIZE) < 0)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);