mirror of
https://github.com/webmproject/libwebp.git
synced 2025-12-23 21:46:26 +01:00
Convert additional memcpy/memsets to unsafe variants
Bug: 432511225 Change-Id: I5ea1fcc2e4884985bec0b3a7618dd75dbd6c21f8
This commit is contained in:
@@ -236,7 +236,7 @@ int WebPInitDecBufferInternal(WebPDecBuffer* buffer, int version) {
|
||||
return 0; // version mismatch
|
||||
}
|
||||
if (buffer == NULL) return 0;
|
||||
memset(buffer, 0, sizeof(*buffer));
|
||||
WEBP_UNSAFE_MEMSET(buffer, 0, sizeof(*buffer));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -105,9 +105,9 @@ static void ReconstructRow(const VP8Decoder* const dec,
|
||||
} else {
|
||||
// we only need to do this init once at block (0,0).
|
||||
// Afterward, it remains valid for the whole topmost row.
|
||||
memset(y_dst - BPS - 1, 127, 16 + 4 + 1);
|
||||
memset(u_dst - BPS - 1, 127, 8 + 1);
|
||||
memset(v_dst - BPS - 1, 127, 8 + 1);
|
||||
WEBP_UNSAFE_MEMSET(y_dst - BPS - 1, 127, 16 + 4 + 1);
|
||||
WEBP_UNSAFE_MEMSET(u_dst - BPS - 1, 127, 8 + 1);
|
||||
WEBP_UNSAFE_MEMSET(v_dst - BPS - 1, 127, 8 + 1);
|
||||
}
|
||||
|
||||
// Reconstruct one row.
|
||||
@@ -144,7 +144,7 @@ static void ReconstructRow(const VP8Decoder* const dec,
|
||||
|
||||
if (mb_y > 0) {
|
||||
if (mb_x >= dec->mb_w - 1) { // on rightmost border
|
||||
memset(top_right, top_yuv[0].y[15], sizeof(*top_right));
|
||||
WEBP_UNSAFE_MEMSET(top_right, top_yuv[0].y[15], sizeof(*top_right));
|
||||
} else {
|
||||
WEBP_UNSAFE_MEMCPY(top_right, top_yuv[1].y, sizeof(*top_right));
|
||||
}
|
||||
@@ -790,11 +790,11 @@ static int AllocateMemory(VP8Decoder* const dec) {
|
||||
assert(mem <= (uint8_t*)dec->mem + dec->mem_size);
|
||||
|
||||
// note: left/top-info is initialized once for all.
|
||||
memset(dec->mb_info - 1, 0, mb_info_size);
|
||||
WEBP_UNSAFE_MEMSET(dec->mb_info - 1, 0, mb_info_size);
|
||||
VP8InitScanline(dec); // initialize left too.
|
||||
|
||||
// initialize top
|
||||
memset(dec->intra_t, B_DC_PRED, intra_pred_mode_size);
|
||||
WEBP_UNSAFE_MEMSET(dec->intra_t, B_DC_PRED, intra_pred_mode_size);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ static int EmitFancyRGB(const VP8Io* const io, WebPDecParams* const p) {
|
||||
static void FillAlphaPlane(uint8_t* dst, int w, int h, int stride) {
|
||||
int j;
|
||||
for (j = 0; j < h; ++j) {
|
||||
memset(dst, 0xff, w * sizeof(*dst));
|
||||
WEBP_UNSAFE_MEMSET(dst, 0xff, w * sizeof(*dst));
|
||||
dst += stride;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,7 +249,7 @@ static const uint8_t kBModesProba[NUM_BMODES][NUM_BMODES][NUM_BMODES - 1] = {
|
||||
{112, 19, 12, 61, 195, 128, 48, 4, 24}}};
|
||||
|
||||
void VP8ResetProba(VP8Proba* const proba) {
|
||||
memset(proba->segments, 255u, sizeof(proba->segments));
|
||||
WEBP_UNSAFE_MEMSET(proba->segments, 255u, sizeof(proba->segments));
|
||||
// proba->bands[][] is initialized later
|
||||
}
|
||||
|
||||
@@ -280,8 +280,8 @@ static void ParseIntraMode(VP8BitReader* const br, VP8Decoder* const dec,
|
||||
? (VP8GetBit(br, 128, "pred-modes") ? TM_PRED : H_PRED)
|
||||
: (VP8GetBit(br, 163, "pred-modes") ? V_PRED : DC_PRED);
|
||||
block->imodes[0] = ymode;
|
||||
memset(top, ymode, 4 * sizeof(*top));
|
||||
memset(left, ymode, 4 * sizeof(*left));
|
||||
WEBP_UNSAFE_MEMSET(top, ymode, 4 * sizeof(*top));
|
||||
WEBP_UNSAFE_MEMSET(left, ymode, 4 * sizeof(*left));
|
||||
} else {
|
||||
uint8_t* modes = block->imodes;
|
||||
int y;
|
||||
|
||||
@@ -63,7 +63,7 @@ int VP8InitIoInternal(VP8Io* const io, int version) {
|
||||
return 0; // mismatch error
|
||||
}
|
||||
if (io != NULL) {
|
||||
memset(io, 0, sizeof(*io));
|
||||
WEBP_UNSAFE_MEMSET(io, 0, sizeof(*io));
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -168,8 +168,8 @@ static void ResetSegmentHeader(VP8SegmentHeader* const hdr) {
|
||||
hdr->use_segment = 0;
|
||||
hdr->update_map = 0;
|
||||
hdr->absolute_delta = 1;
|
||||
memset(hdr->quantizer, 0, sizeof(hdr->quantizer));
|
||||
memset(hdr->filter_strength, 0, sizeof(hdr->filter_strength));
|
||||
WEBP_UNSAFE_MEMSET(hdr->quantizer, 0, sizeof(hdr->quantizer));
|
||||
WEBP_UNSAFE_MEMSET(hdr->filter_strength, 0, sizeof(hdr->filter_strength));
|
||||
}
|
||||
|
||||
// Paragraph 9.3
|
||||
@@ -542,7 +542,7 @@ static int ParseResiduals(VP8Decoder* const dec, VP8MB* const mb,
|
||||
uint32_t out_t_nz, out_l_nz;
|
||||
int first;
|
||||
|
||||
memset(dst, 0, 384 * sizeof(*dst));
|
||||
WEBP_UNSAFE_MEMSET(dst, 0, 384 * sizeof(*dst));
|
||||
if (!block->is_i4x4) { // parse DC
|
||||
int16_t dc[16] = {0};
|
||||
const int ctx = mb->nz_dc + left_mb->nz_dc;
|
||||
@@ -652,7 +652,7 @@ void VP8InitScanline(VP8Decoder* const dec) {
|
||||
VP8MB* const left = dec->mb_info - 1;
|
||||
left->nz = 0;
|
||||
left->nz_dc = 0;
|
||||
memset(dec->intra_l, B_DC_PRED, sizeof(dec->intra_l));
|
||||
WEBP_UNSAFE_MEMSET(dec->intra_l, B_DC_PRED, sizeof(dec->intra_l));
|
||||
dec->mb_x = 0;
|
||||
}
|
||||
|
||||
@@ -734,7 +734,7 @@ void VP8Clear(VP8Decoder* const dec) {
|
||||
WebPSafeFree(dec->mem);
|
||||
dec->mem = NULL;
|
||||
dec->mem_size = 0;
|
||||
memset(&dec->br, 0, sizeof(dec->br));
|
||||
WEBP_UNSAFE_MEMSET(&dec->br, 0, sizeof(dec->br));
|
||||
dec->ready = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -309,7 +309,7 @@ static int ReadHuffmanCode(int alphabet_size, VP8LDecoder* const dec,
|
||||
VP8LBitReader* const br = &dec->br;
|
||||
const int simple_code = VP8LReadBits(br, 1);
|
||||
|
||||
memset(code_lengths, 0, alphabet_size * sizeof(*code_lengths));
|
||||
WEBP_UNSAFE_MEMSET(code_lengths, 0, alphabet_size * sizeof(*code_lengths));
|
||||
|
||||
if (simple_code) { // Read symbols, codes & code lengths directly.
|
||||
const int num_symbols = VP8LReadBits(br, 1) + 1;
|
||||
@@ -400,7 +400,8 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize,
|
||||
}
|
||||
// -1 means a value is unmapped, and therefore unused in the Huffman
|
||||
// image.
|
||||
memset(mapping, 0xff, num_htree_groups_max * sizeof(*mapping));
|
||||
WEBP_UNSAFE_MEMSET(mapping, 0xff,
|
||||
num_htree_groups_max * sizeof(*mapping));
|
||||
for (num_htree_groups = 0, i = 0; i < huffman_pixs; ++i) {
|
||||
// Get the current mapping for the group and remap the Huffman image.
|
||||
int* const mapped_group = &mapping[huffman_image[i]];
|
||||
@@ -1450,7 +1451,7 @@ static int ReadTransform(int* const xsize, int const* ysize,
|
||||
|
||||
static void InitMetadata(VP8LMetadata* const hdr) {
|
||||
assert(hdr != NULL);
|
||||
memset(hdr, 0, sizeof(*hdr));
|
||||
WEBP_UNSAFE_MEMSET(hdr, 0, sizeof(*hdr));
|
||||
}
|
||||
|
||||
static void ClearMetadata(VP8LMetadata* const hdr) {
|
||||
|
||||
@@ -303,7 +303,7 @@ static VP8StatusCode ParseHeadersInternal(const uint8_t* data, size_t data_size,
|
||||
if (data == NULL || data_size < RIFF_HEADER_SIZE) {
|
||||
return VP8_STATUS_NOT_ENOUGH_DATA;
|
||||
}
|
||||
memset(&hdrs, 0, sizeof(hdrs));
|
||||
WEBP_UNSAFE_MEMSET(&hdrs, 0, sizeof(hdrs));
|
||||
hdrs.data = data;
|
||||
hdrs.data_size = data_size;
|
||||
|
||||
@@ -441,7 +441,7 @@ VP8StatusCode WebPParseHeaders(WebPHeaderStructure* const headers) {
|
||||
|
||||
void WebPResetDecParams(WebPDecParams* const params) {
|
||||
if (params != NULL) {
|
||||
memset(params, 0, sizeof(*params));
|
||||
WEBP_UNSAFE_MEMSET(params, 0, sizeof(*params));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -692,7 +692,7 @@ uint8_t* WebPDecodeYUV(const uint8_t* data, size_t data_size, int* width,
|
||||
|
||||
static void DefaultFeatures(WebPBitstreamFeatures* const features) {
|
||||
assert(features != NULL);
|
||||
memset(features, 0, sizeof(*features));
|
||||
WEBP_UNSAFE_MEMSET(features, 0, sizeof(*features));
|
||||
}
|
||||
|
||||
static VP8StatusCode GetFeatures(const uint8_t* const data, size_t data_size,
|
||||
@@ -739,7 +739,7 @@ int WebPInitDecoderConfigInternal(WebPDecoderConfig* config, int version) {
|
||||
if (config == NULL) {
|
||||
return 0;
|
||||
}
|
||||
memset(config, 0, sizeof(*config));
|
||||
WEBP_UNSAFE_MEMSET(config, 0, sizeof(*config));
|
||||
DefaultFeatures(&config->input);
|
||||
if (!WebPInitDecBuffer(&config->output)) {
|
||||
return 0;
|
||||
|
||||
@@ -65,7 +65,7 @@ struct WebPData {
|
||||
// Initializes the contents of the 'webp_data' object with default values.
|
||||
static WEBP_INLINE void WebPDataInit(WebPData* webp_data) {
|
||||
if (webp_data != NULL) {
|
||||
memset(webp_data, 0, sizeof(*webp_data));
|
||||
WEBP_UNSAFE_MEMSET(webp_data, 0, sizeof(*webp_data));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ WEBP_NODISCARD static WEBP_INLINE int WebPDataCopy(const WebPData* src,
|
||||
if (src->bytes != NULL && src->size != 0) {
|
||||
dst->bytes = (uint8_t*)WebPMalloc(src->size);
|
||||
if (dst->bytes == NULL) return 0;
|
||||
memcpy((void*)dst->bytes, src->bytes, src->size);
|
||||
WEBP_UNSAFE_MEMCPY((void*)dst->bytes, src->bytes, src->size);
|
||||
dst->size = src->size;
|
||||
}
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user