aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Romanko <me@blankhex.com>2025-08-13 16:33:58 +0300
committerMikhail Romanko <me@blankhex.com>2025-08-24 16:18:26 +0300
commitdd63b19f71fb26dcb06e6f5b8c69145b4464f6c3 (patch)
treeb561d3eb8ad74e34b0a7812bc258cbbc002c3046
parentd05efc5f85fa4d820c476a73d262abf5f6a58228 (diff)
downloadbhlib-dd63b19f71fb26dcb06e6f5b8c69145b4464f6c3.tar.gz
Remove extra whitespace, add size checks
-rw-r--r--src/Bitmap.c32
-rw-r--r--src/Hashmap.c2
2 files changed, 21 insertions, 13 deletions
diff --git a/src/Bitmap.c b/src/Bitmap.c
index 674393d..e5eecd6 100644
--- a/src/Bitmap.c
+++ b/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[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];
if (currentError < bestError)
@@ -133,13 +133,13 @@ static void readPacked(const FormatInfo *formatInfo,
BH_Color *value)
{
uint64_t raw;
-
+
switch (formatInfo->type)
{
case TYPE_PACKED8: raw = *(uint8_t *)data; break;
case TYPE_PACKED16: raw = *(uint16_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)
@@ -173,8 +173,8 @@ static void writePacked(const FormatInfo *formatInfo,
case TYPE_PACKED8: *(uint8_t *)data = raw; break;
case TYPE_PACKED16: *(uint16_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:
*value = palette[readIndex(formatInfo, data, x)];
break;
-
+
case TYPE_ARRAY:
readArray(formatInfo, data, x, value);
value->type = BH_COLOR_TYPE_RGBA;
@@ -326,7 +326,7 @@ void writeData(const FormatInfo *formatInfo,
case TYPE_INDEX:
writeIndex(formatInfo, data, x, bestPaletteIndex(value, palette, formatInfo));
break;
-
+
case TYPE_ARRAY:
BH_ColorToRGBA(value, value);
writeArray(formatInfo, data, x, value);
@@ -423,12 +423,14 @@ BH_Bitmap *BH_BitmapNew(uint32_t width,
size_t header, body, allocSize, stride, step;
/* Basic sanity check */
- if (width == 0 || width >= 0x7FFFFFFF ||
+ if (width == 0 || width >= 0x7FFFFFFF ||
height == 0 || height >= 0x7FFFFFFF)
return NULL;
/* Get format information */
formatInfo = formats + (format & 0x0FFF);
+ if ((format & 0x0FFF) > sizeof(formats) / sizeof(FormatInfo))
+ return NULL;
/* Unset internal flags */
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))
return NULL;
-
+
stride = (stride + sizeof(uint32_t) - 1) & ~(sizeof(uint32_t) - 1);
}
@@ -457,7 +459,7 @@ BH_Bitmap *BH_BitmapNew(uint32_t width,
body = stride * height;
if (BH_CHECK_UMUL_WRAP(stride, height, size_t))
return NULL;
-
+
if (BH_CHECK_UADD_WRAP(body, sizeof(uint32_t) - 1, size_t))
return NULL;
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))
return NULL;
allocSize += header;
-
+
if (BH_CHECK_UADD_WRAP(allocSize, body, size_t))
return NULL;
allocSize += body;
@@ -550,7 +552,7 @@ BH_Bitmap *BH_BitmapCopy(BH_Bitmap *bitmap,
/* Sanity checks */
if (!width || !height || x >= bitmap->width || y >= bitmap->height)
return NULL;
-
+
if (width < bitmap->width - x || height < bitmap->height - y)
return NULL;
@@ -674,6 +676,12 @@ void BH_BitmapConvertRow(void *src,
srcInfo = formats + (srcFormat & 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)
{
void *srcAt, *destAt;
diff --git a/src/Hashmap.c b/src/Hashmap.c
index 8ecadf8..9f58abd 100644
--- a/src/Hashmap.c
+++ b/src/Hashmap.c
@@ -65,7 +65,7 @@ static int BH_CalcCapacity(size_t size,
/* Catch capacity overflow */
if (BH_CHECK_UMUL_WRAP(*capacity, 2, size_t))
return BH_OOM;
-
+
*capacity *= 2;
*threshold = *capacity * factor;
}