Remove extra whitespace, add size checks
This commit is contained in:
32
src/Bitmap.c
32
src/Bitmap.c
@@ -113,7 +113,7 @@ static size_t bestPaletteIndex(BH_Color *color,
|
|||||||
delta[2] = (int32_t)color->data.channel[2] - palette[i].data.channel[2];
|
delta[2] = (int32_t)color->data.channel[2] - palette[i].data.channel[2];
|
||||||
delta[3] = (int32_t)color->data.channel[3] - palette[i].data.channel[3];
|
delta[3] = (int32_t)color->data.channel[3] - palette[i].data.channel[3];
|
||||||
|
|
||||||
currentError = delta[0] * delta[0] + delta[1] * delta[1] +
|
currentError = delta[0] * delta[0] + delta[1] * delta[1] +
|
||||||
delta[2] * delta[2] + delta[3] * delta[3];
|
delta[2] * delta[2] + delta[3] * delta[3];
|
||||||
|
|
||||||
if (currentError < bestError)
|
if (currentError < bestError)
|
||||||
@@ -133,13 +133,13 @@ static void readPacked(const FormatInfo *formatInfo,
|
|||||||
BH_Color *value)
|
BH_Color *value)
|
||||||
{
|
{
|
||||||
uint64_t raw;
|
uint64_t raw;
|
||||||
|
|
||||||
switch (formatInfo->type)
|
switch (formatInfo->type)
|
||||||
{
|
{
|
||||||
case TYPE_PACKED8: raw = *(uint8_t *)data; break;
|
case TYPE_PACKED8: raw = *(uint8_t *)data; break;
|
||||||
case TYPE_PACKED16: raw = *(uint16_t *)data; break;
|
case TYPE_PACKED16: raw = *(uint16_t *)data; break;
|
||||||
case TYPE_PACKED32: raw = *(uint32_t *)data; break;
|
case TYPE_PACKED32: raw = *(uint32_t *)data; break;
|
||||||
case TYPE_PACKED64: raw = *(uint64_t *)data; break;
|
case TYPE_PACKED64: raw = *(uint64_t *)data; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (formatInfo->channels)
|
switch (formatInfo->channels)
|
||||||
@@ -173,8 +173,8 @@ static void writePacked(const FormatInfo *formatInfo,
|
|||||||
case TYPE_PACKED8: *(uint8_t *)data = raw; break;
|
case TYPE_PACKED8: *(uint8_t *)data = raw; break;
|
||||||
case TYPE_PACKED16: *(uint16_t *)data = raw; break;
|
case TYPE_PACKED16: *(uint16_t *)data = raw; break;
|
||||||
case TYPE_PACKED32: *(uint32_t *)data = raw; break;
|
case TYPE_PACKED32: *(uint32_t *)data = raw; break;
|
||||||
case TYPE_PACKED64: *(uint64_t *)data = raw; break;
|
case TYPE_PACKED64: *(uint64_t *)data = raw; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -301,7 +301,7 @@ void readData(const FormatInfo *formatInfo,
|
|||||||
case TYPE_INDEX:
|
case TYPE_INDEX:
|
||||||
*value = palette[readIndex(formatInfo, data, x)];
|
*value = palette[readIndex(formatInfo, data, x)];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPE_ARRAY:
|
case TYPE_ARRAY:
|
||||||
readArray(formatInfo, data, x, value);
|
readArray(formatInfo, data, x, value);
|
||||||
value->type = BH_COLOR_TYPE_RGBA;
|
value->type = BH_COLOR_TYPE_RGBA;
|
||||||
@@ -326,7 +326,7 @@ void writeData(const FormatInfo *formatInfo,
|
|||||||
case TYPE_INDEX:
|
case TYPE_INDEX:
|
||||||
writeIndex(formatInfo, data, x, bestPaletteIndex(value, palette, formatInfo));
|
writeIndex(formatInfo, data, x, bestPaletteIndex(value, palette, formatInfo));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TYPE_ARRAY:
|
case TYPE_ARRAY:
|
||||||
BH_ColorToRGBA(value, value);
|
BH_ColorToRGBA(value, value);
|
||||||
writeArray(formatInfo, data, x, value);
|
writeArray(formatInfo, data, x, value);
|
||||||
@@ -423,12 +423,14 @@ BH_Bitmap *BH_BitmapNew(uint32_t width,
|
|||||||
size_t header, body, allocSize, stride, step;
|
size_t header, body, allocSize, stride, step;
|
||||||
|
|
||||||
/* Basic sanity check */
|
/* Basic sanity check */
|
||||||
if (width == 0 || width >= 0x7FFFFFFF ||
|
if (width == 0 || width >= 0x7FFFFFFF ||
|
||||||
height == 0 || height >= 0x7FFFFFFF)
|
height == 0 || height >= 0x7FFFFFFF)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Get format information */
|
/* Get format information */
|
||||||
formatInfo = formats + (format & 0x0FFF);
|
formatInfo = formats + (format & 0x0FFF);
|
||||||
|
if ((format & 0x0FFF) > sizeof(formats) / sizeof(FormatInfo))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* Unset internal flags */
|
/* Unset internal flags */
|
||||||
flags &= ~BH_BITMAP_FLAG_EXT_DATA;
|
flags &= ~BH_BITMAP_FLAG_EXT_DATA;
|
||||||
@@ -446,7 +448,7 @@ BH_Bitmap *BH_BitmapNew(uint32_t width,
|
|||||||
{
|
{
|
||||||
if (BH_CHECK_UADD_WRAP(stride, sizeof(uint32_t) - 1, size_t))
|
if (BH_CHECK_UADD_WRAP(stride, sizeof(uint32_t) - 1, size_t))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
stride = (stride + sizeof(uint32_t) - 1) & ~(sizeof(uint32_t) - 1);
|
stride = (stride + sizeof(uint32_t) - 1) & ~(sizeof(uint32_t) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -457,7 +459,7 @@ BH_Bitmap *BH_BitmapNew(uint32_t width,
|
|||||||
body = stride * height;
|
body = stride * height;
|
||||||
if (BH_CHECK_UMUL_WRAP(stride, height, size_t))
|
if (BH_CHECK_UMUL_WRAP(stride, height, size_t))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (BH_CHECK_UADD_WRAP(body, sizeof(uint32_t) - 1, size_t))
|
if (BH_CHECK_UADD_WRAP(body, sizeof(uint32_t) - 1, size_t))
|
||||||
return NULL;
|
return NULL;
|
||||||
body = (body + (sizeof(uint32_t) - 1)) & ~(sizeof(uint32_t) - 1);
|
body = (body + (sizeof(uint32_t) - 1)) & ~(sizeof(uint32_t) - 1);
|
||||||
@@ -478,7 +480,7 @@ BH_Bitmap *BH_BitmapNew(uint32_t width,
|
|||||||
if (BH_CHECK_UADD_WRAP(allocSize, header, size_t))
|
if (BH_CHECK_UADD_WRAP(allocSize, header, size_t))
|
||||||
return NULL;
|
return NULL;
|
||||||
allocSize += header;
|
allocSize += header;
|
||||||
|
|
||||||
if (BH_CHECK_UADD_WRAP(allocSize, body, size_t))
|
if (BH_CHECK_UADD_WRAP(allocSize, body, size_t))
|
||||||
return NULL;
|
return NULL;
|
||||||
allocSize += body;
|
allocSize += body;
|
||||||
@@ -550,7 +552,7 @@ BH_Bitmap *BH_BitmapCopy(BH_Bitmap *bitmap,
|
|||||||
/* Sanity checks */
|
/* Sanity checks */
|
||||||
if (!width || !height || x >= bitmap->width || y >= bitmap->height)
|
if (!width || !height || x >= bitmap->width || y >= bitmap->height)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (width < bitmap->width - x || height < bitmap->height - y)
|
if (width < bitmap->width - x || height < bitmap->height - y)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -674,6 +676,12 @@ void BH_BitmapConvertRow(void *src,
|
|||||||
srcInfo = formats + (srcFormat & 0x0FFF);
|
srcInfo = formats + (srcFormat & 0x0FFF);
|
||||||
destInfo = formats + (destFormat & 0x0FFF);
|
destInfo = formats + (destFormat & 0x0FFF);
|
||||||
|
|
||||||
|
if ((srcFormat & 0x0FFF) > sizeof(formats) / sizeof(FormatInfo))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((destFormat & 0x0FFF) > sizeof(formats) / sizeof(FormatInfo))
|
||||||
|
return;
|
||||||
|
|
||||||
for (x = 0; count; --count, ++x)
|
for (x = 0; count; --count, ++x)
|
||||||
{
|
{
|
||||||
void *srcAt, *destAt;
|
void *srcAt, *destAt;
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ static int BH_CalcCapacity(size_t size,
|
|||||||
/* Catch capacity overflow */
|
/* Catch capacity overflow */
|
||||||
if (BH_CHECK_UMUL_WRAP(*capacity, 2, size_t))
|
if (BH_CHECK_UMUL_WRAP(*capacity, 2, size_t))
|
||||||
return BH_OOM;
|
return BH_OOM;
|
||||||
|
|
||||||
*capacity *= 2;
|
*capacity *= 2;
|
||||||
*threshold = *capacity * factor;
|
*threshold = *capacity * factor;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user