comparison svq3.c @ 11881:8daf3134622c libavcodec

Fix svq3 watermark log uncompress on 64bit, probably fixes issue 1263
author bcoudurier
date Tue, 15 Jun 2010 22:38:16 +0000
parents 7dd2a45249a9
children
comparison
equal deleted inserted replaced
11880:3ab26ab83911 11881:8daf3134622c
884 unsigned watermark_height = svq3_get_ue_golomb(&gb); 884 unsigned watermark_height = svq3_get_ue_golomb(&gb);
885 int u1 = svq3_get_ue_golomb(&gb); 885 int u1 = svq3_get_ue_golomb(&gb);
886 int u2 = get_bits(&gb, 8); 886 int u2 = get_bits(&gb, 8);
887 int u3 = get_bits(&gb, 2); 887 int u3 = get_bits(&gb, 2);
888 int u4 = svq3_get_ue_golomb(&gb); 888 int u4 = svq3_get_ue_golomb(&gb);
889 unsigned buf_len = watermark_width*watermark_height*4; 889 unsigned long buf_len = watermark_width*watermark_height*4;
890 int offset = (get_bits_count(&gb)+7)>>3; 890 int offset = (get_bits_count(&gb)+7)>>3;
891 uint8_t *buf; 891 uint8_t *buf;
892 892
893 if ((uint64_t)watermark_width*4 > UINT_MAX/watermark_height) 893 if ((uint64_t)watermark_width*4 > UINT_MAX/watermark_height)
894 return -1; 894 return -1;
895 895
896 buf = av_malloc(buf_len); 896 buf = av_malloc(buf_len);
897 av_log(avctx, AV_LOG_DEBUG, "watermark size: %dx%d\n", watermark_width, watermark_height); 897 av_log(avctx, AV_LOG_DEBUG, "watermark size: %dx%d\n", watermark_width, watermark_height);
898 av_log(avctx, AV_LOG_DEBUG, "u1: %x u2: %x u3: %x compressed data size: %d offset: %d\n", u1, u2, u3, u4, offset); 898 av_log(avctx, AV_LOG_DEBUG, "u1: %x u2: %x u3: %x compressed data size: %d offset: %d\n", u1, u2, u3, u4, offset);
899 if (uncompress(buf, (uLong*)&buf_len, extradata + 8 + offset, size - offset) != Z_OK) { 899 if (uncompress(buf, &buf_len, extradata + 8 + offset, size - offset) != Z_OK) {
900 av_log(avctx, AV_LOG_ERROR, "could not uncompress watermark logo\n"); 900 av_log(avctx, AV_LOG_ERROR, "could not uncompress watermark logo\n");
901 av_free(buf); 901 av_free(buf);
902 return -1; 902 return -1;
903 } 903 }
904 h->svq3_watermark_key = ff_svq1_packet_checksum(buf, buf_len, 0); 904 h->svq3_watermark_key = ff_svq1_packet_checksum(buf, buf_len, 0);