Remove extra whitespace, add size checks

This commit is contained in:
2025-08-13 16:33:58 +03:00
parent d05efc5f85
commit dd63b19f71
2 changed files with 21 additions and 13 deletions

View File

@@ -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;

View File

@@ -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;
} }