commit ef9867791b3b4f63e18320972a0fa1499580a34c Author: tigro Date: Sun Jan 14 23:32:39 2024 +0300 import stb-0^20231011gitbeebb24-12.el9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b205e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/stb-beebb24b945efdea3b9bba23affb8eb3ba8982e7.tar.gz diff --git a/.stb.metadata b/.stb.metadata new file mode 100644 index 0000000..92ecbf7 --- /dev/null +++ b/.stb.metadata @@ -0,0 +1 @@ +d0196e6258e2a58d18e06f1482743c9ddb5d3cad SOURCES/stb-beebb24b945efdea3b9bba23affb8eb3ba8982e7.tar.gz diff --git a/SOURCES/0001-Fix-Null-pointer-dereference-because-of-an-uninitial.patch b/SOURCES/0001-Fix-Null-pointer-dereference-because-of-an-uninitial.patch new file mode 100644 index 0000000..560178c --- /dev/null +++ b/SOURCES/0001-Fix-Null-pointer-dereference-because-of-an-uninitial.patch @@ -0,0 +1,27 @@ +From 800a684d6d3cae7ed2437a23496d9306c0dfa8dc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 16:33:06 +0200 +Subject: [PATCH] Fix Null pointer dereference because of an uninitialized + variable + +Call `stbi__vertical_flip_slices` only if the previous function didn't fail. Fixes #1550 +--- + stb_image.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stb_image.h b/stb_image.h +index 49c53d0..de12c06 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -1446,7 +1446,7 @@ STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int * + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); +- if (stbi__vertically_flip_on_load) { ++ if (stbi__vertically_flip_on_load && result) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip_slices( result, *x, *y, *z, channels ); + } +-- +2.41.0 + diff --git a/SOURCES/0001-Fix-double-free-in-stbi__load_gif_main_outofmem.patch b/SOURCES/0001-Fix-double-free-in-stbi__load_gif_main_outofmem.patch new file mode 100644 index 0000000..bd4576d --- /dev/null +++ b/SOURCES/0001-Fix-double-free-in-stbi__load_gif_main_outofmem.patch @@ -0,0 +1,28 @@ +From 4a4c1eeb8540c61ceb3456b3277184bc1c63c9be Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 16:16:34 +0200 +Subject: [PATCH 1/2] Fix double-free in stbi__load_gif_main_outofmem + +Fixes #1544 +--- + stb_image.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/stb_image.h b/stb_image.h +index aac3653..d3a1f59 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -6990,6 +6990,10 @@ static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + stride = g.w * g.h * 4; + + if (out) { ++ if (stride == 0) { ++ void *ret = stbi__load_gif_main_outofmem(&g, out, delays); ++ return ret; ++ } + if (!stbi__mul2sizes_valid(layers, stride)) { + void *ret = stbi__load_gif_main_outofmem(&g, out, delays); + return ret; +-- +2.41.0 + diff --git a/SOURCES/0002-Fix-possible-double-free-or-memory-leak-in-stbi__loa.patch b/SOURCES/0002-Fix-possible-double-free-or-memory-leak-in-stbi__loa.patch new file mode 100644 index 0000000..25118c4 --- /dev/null +++ b/SOURCES/0002-Fix-possible-double-free-or-memory-leak-in-stbi__loa.patch @@ -0,0 +1,46 @@ +From 33c3c202425daea456520f92846b37da6a83e1c0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 16:29:56 +0200 +Subject: [PATCH 2/2] Fix possible double-free or memory leak in + stbi__load_gif_main + +Fixes #1548 +--- + stb_image.h | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/stb_image.h b/stb_image.h +index d3a1f59..df4ff95 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -6999,8 +6999,11 @@ static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + return ret; + } + void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); +- if (!tmp) +- return stbi__load_gif_main_outofmem(&g, out, delays); ++ if (!tmp) { ++ void *ret = stbi__load_gif_main_outofmem(&g, out, delays); ++ if (delays && *delays) *delays = 0; ++ return ret; ++ } + else { + out = (stbi_uc*) tmp; + out_size = layers * stride; +@@ -7019,8 +7022,11 @@ static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + return ret; + } + out = (stbi_uc*)stbi__malloc( layers * stride ); +- if (!out) +- return stbi__load_gif_main_outofmem(&g, out, delays); ++ if (!out) { ++ void *ret = stbi__load_gif_main_outofmem(&g, out, delays); ++ if (delays && *delays) *delays = 0; ++ return ret; ++ } + out_size = layers * stride; + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); +-- +2.41.0 + diff --git a/SOURCES/1194.patch b/SOURCES/1194.patch new file mode 100644 index 0000000..364d026 --- /dev/null +++ b/SOURCES/1194.patch @@ -0,0 +1,233 @@ +From 3d401e71452d890eaf0bc50b11788cb08a6c2fed Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Tue, 17 Aug 2021 21:30:44 -0400 +Subject: [PATCH] =?UTF-8?q?Fix=20undefined=20behavior=20from=20array=20?= + =?UTF-8?q?=E2=80=9Cshape-punning=E2=80=9D?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In stb_voxel_render.h, there were three cases where a 2D array of +dimension [X][Y] was iterated as a 1D array of dimension [1][X*Y]. While +this is clever and is correct in terms of the actual memory layout, a +second index outside the corresponding dimension ([i][j], j >= Y]) +actually produces undefined behavior and gives the compiler freedom to +do all sorts of terrible things. + +The same thing happens in stb_tilemap_editor.h, +tests/caveview/cave_mesher.c, and tests/resample_test.cpp. + +Prior to this commit, a compiler warning regarding the undefined +behavior appears on gcc 11.2.1 for at least some of these cases when the +tests are compiled with -Waggressive-loop-optimizations (included in +-Wall). + +This commit fixes the undefined behavior by iterating these 2D arrays +with the conventional nested loops. +--- + stb_tilemap_editor.h | 35 +++++++++++++++++++---------------- + stb_voxel_render.h | 36 +++++++++++++++++++++--------------- + tests/caveview/cave_mesher.c | 26 ++++++++++++++------------ + tests/resample_test.cpp | 15 +++++++++------ + 4 files changed, 63 insertions(+), 49 deletions(-) + +diff --git a/stb_tilemap_editor.h b/stb_tilemap_editor.h +index fbd3388084..0b8c2ca997 100644 +--- a/stb_tilemap_editor.h ++++ b/stb_tilemap_editor.h +@@ -1066,14 +1066,15 @@ stbte_tilemap *stbte_create_map(int map_x, int map_y, int map_layers, int spacin + + void stbte_set_background_tile(stbte_tilemap *tm, short id) + { +- int i; ++ int i, j; + STBTE_ASSERT(id >= -1); + // STBTE_ASSERT(id < 32768); + if (id < -1) + return; +- for (i=0; i < STBTE_MAX_TILEMAP_X * STBTE_MAX_TILEMAP_Y; ++i) +- if (tm->data[0][i][0] == -1) +- tm->data[0][i][0] = id; ++ for (i=0; i < STBTE_MAX_TILEMAP_X; ++i) ++ for (j=0; j < STBTE_MAX_TILEMAP_Y; ++j) ++ if (tm->data[i][j][0] == -1) ++ tm->data[i][j][0] = id; + tm->background_tile = id; + } + +@@ -1212,18 +1213,20 @@ void stbte_set_dimensions(stbte_tilemap *tm, int map_x, int map_y) + + void stbte_clear_map(stbte_tilemap *tm) + { +- int i,j; +- for (i=0; i < STBTE_MAX_TILEMAP_X * STBTE_MAX_TILEMAP_Y; ++i) { +- tm->data[0][i][0] = tm->background_tile; +- for (j=1; j < tm->num_layers; ++j) +- tm->data[0][i][j] = STBTE__NO_TILE; +- for (j=0; j < STBTE_MAX_PROPERTIES; ++j) +- tm->props[0][i][j] = 0; +- #ifdef STBTE_ALLOW_LINK +- tm->link[0][i].x = -1; +- tm->link[0][i].y = -1; +- tm->linkcount[0][i] = 0; +- #endif ++ int i,j,k; ++ for (i=0; i < STBTE_MAX_TILEMAP_X; ++i) { ++ for (j=0; j < STBTE_MAX_TILEMAP_Y; ++j) { ++ tm->data[i][j][0] = tm->background_tile; ++ for (k=1; k < tm->num_layers; ++k) ++ tm->data[i][j][k] = STBTE__NO_TILE; ++ for (k=0; k < STBTE_MAX_PROPERTIES; ++k) ++ tm->props[i][j][k] = 0; ++ #ifdef STBTE_ALLOW_LINK ++ tm->link[i][j].x = -1; ++ tm->link[i][j].y = -1; ++ tm->linkcount[i][j] = 0; ++ #endif ++ } + } + } + +diff --git a/stb_voxel_render.h b/stb_voxel_render.h +index 2e7a372f83..51011091f7 100644 +--- a/stb_voxel_render.h ++++ b/stb_voxel_render.h +@@ -3126,15 +3126,17 @@ static void stbvox_make_mesh_for_block_with_geo(stbvox_mesh_maker *mm, stbvox_po + stbvox_mesh_vertex vmesh[6][4]; + stbvox_rotate rotate = { 0,0,0,0 }; + unsigned char simple_rot = rot; +- int i; ++ int i, j; + // we only need to do this for the displayed faces, but it's easier + // to just do it up front; @OPTIMIZE check if it's faster to do it + // for visible faces only +- for (i=0; i < 6*4; ++i) { +- int vert = stbvox_vertex_selector[0][i]; +- vert = stbvox_rotate_vertex[vert][rot]; +- vmesh[0][i] = stbvox_vmesh_pre_vheight[0][i] +- + stbvox_geometry_vheight[geo][vert]; ++ for (i=0; i < 6; ++i) { ++ for (j=0; j < 4; ++j) { ++ int vert = stbvox_vertex_selector[i][j]; ++ vert = stbvox_rotate_vertex[vert][rot]; ++ vmesh[i][j] = stbvox_vmesh_pre_vheight[i][j] ++ + stbvox_geometry_vheight[geo][vert]; ++ } + } + + basevert = stbvox_vertex_encode(pos.x, pos.y, pos.z << STBVOX_CONFIG_PRECISION_Z, 0,0); +@@ -3275,11 +3277,13 @@ static void stbvox_make_mesh_for_block_with_geo(stbvox_mesh_maker *mm, stbvox_po + + // build vertex mesh + { +- int i; +- for (i=0; i < 6*4; ++i) { +- int vert = stbvox_vertex_selector[0][i]; +- vmesh[0][i] = stbvox_vmesh_pre_vheight[0][i] +- + cube[vert]; ++ int i, j; ++ for (i=0; i < 6; ++i) { ++ for (j=0; j < 4; ++j) { ++ int vert = stbvox_vertex_selector[i][j]; ++ vmesh[i][j] = stbvox_vmesh_pre_vheight[i][j] ++ + cube[vert]; ++ } + } + } + +@@ -3541,10 +3545,12 @@ int stbvox_get_buffer_size_per_quad(stbvox_mesh_maker *mm, int n) + + void stbvox_reset_buffers(stbvox_mesh_maker *mm) + { +- int i; +- for (i=0; i < STBVOX_MAX_MESHES*STBVOX_MAX_MESH_SLOTS; ++i) { +- mm->output_cur[0][i] = 0; +- mm->output_buffer[0][i] = 0; ++ int i, j; ++ for (i=0; i < STBVOX_MAX_MESHES; ++i) { ++ for (j=0; j < STBVOX_MAX_MESH_SLOTS; ++j) { ++ mm->output_cur[i][j] = 0; ++ mm->output_buffer[i][j] = 0; ++ } + } + } + +diff --git a/tests/caveview/cave_mesher.c b/tests/caveview/cave_mesher.c +index 1f76c89812..bbf79898b6 100644 +--- a/tests/caveview/cave_mesher.c ++++ b/tests/caveview/cave_mesher.c +@@ -802,7 +802,7 @@ void remap_in_place(int bt, int rm) + + void mesh_init(void) + { +- int i; ++ int i, j; + + chunk_cache_mutex = SDL_CreateMutex(); + chunk_get_mutex = SDL_CreateMutex(); +@@ -814,17 +814,19 @@ void mesh_init(void) + } + //effective_blocktype[50] = 0; // delete torches + +- for (i=0; i < 6*256; ++i) { +- if (minecraft_tex1_for_blocktype[0][i] == 40) +- minecraft_color_for_blocktype[0][i] = 38 | 64; // apply to tex1 +- if (minecraft_tex1_for_blocktype[0][i] == 39) +- minecraft_color_for_blocktype[0][i] = 39 | 64; // apply to tex1 +- if (minecraft_tex1_for_blocktype[0][i] == 105) +- minecraft_color_for_blocktype[0][i] = 63; // emissive +- if (minecraft_tex1_for_blocktype[0][i] == 212) +- minecraft_color_for_blocktype[0][i] = 63; // emissive +- if (minecraft_tex1_for_blocktype[0][i] == 80) +- minecraft_color_for_blocktype[0][i] = 63; // emissive ++ for (i=0; i < 6; ++i) { ++ for (j=0; j < 256; ++j) { ++ if (minecraft_tex1_for_blocktype[i][j] == 40) ++ minecraft_color_for_blocktype[i][j] = 38 | 64; // apply to tex1 ++ if (minecraft_tex1_for_blocktype[i][j] == 39) ++ minecraft_color_for_blocktype[i][j] = 39 | 64; // apply to tex1 ++ if (minecraft_tex1_for_blocktype[i][j] == 105) ++ minecraft_color_for_blocktype[i][j] = 63; // emissive ++ if (minecraft_tex1_for_blocktype[i][j] == 212) ++ minecraft_color_for_blocktype[i][j] = 63; // emissive ++ if (minecraft_tex1_for_blocktype[i][j] == 80) ++ minecraft_color_for_blocktype[i][j] = 63; // emissive ++ } + } + + for (i=0; i < 6; ++i) { +diff --git a/tests/resample_test.cpp b/tests/resample_test.cpp +index 21f874f18b..bb8ad82ef6 100644 +--- a/tests/resample_test.cpp ++++ b/tests/resample_test.cpp +@@ -646,8 +646,9 @@ void verify_box(void) + + resample_88(STBIR_FILTER_BOX); + +- for (i=0; i < sizeof(image88); ++i) +- STBIR_ASSERT(image88[0][i] == output88[0][i]); ++ for (i=0; i < sizeof(image88) / sizeof(image88[0]); ++i) ++ for (j=0; j < sizeof(image88[0]); ++j) ++ STBIR_ASSERT(image88[i][j] == output88[i][j]); + + t = 0; + for (j=0; j < 4; ++j) +@@ -685,12 +686,14 @@ void test_filters(void) + + mtsrand(0); + +- for (i=0; i < sizeof(image88); ++i) +- image88[0][i] = mtrand() & 255; ++ for (i=0; i < sizeof(image88) / sizeof(image88[0]); ++i) ++ for (j=0; j < sizeof(image88[0]); ++j) ++ image88[i][j] = mtrand() & 255; + verify_box(); + +- for (i=0; i < sizeof(image88); ++i) +- image88[0][i] = 0; ++ for (i=0; i < sizeof(image88) / sizeof(image88[0]); ++i) ++ for (j=0; j < sizeof(image88[0]); ++j) ++ image88[i][j] = 0; + image88[4][4] = 255; + verify_box(); + diff --git a/SOURCES/1195.patch b/SOURCES/1195.patch new file mode 100644 index 0000000..312eacd --- /dev/null +++ b/SOURCES/1195.patch @@ -0,0 +1,59 @@ +From 5818c4e48a7e7d4c21aacf3cd6f1c7e12f770924 Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Wed, 18 Aug 2021 13:22:14 -0400 +Subject: [PATCH] Fix misleading indentation in stb_divide.h +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With -Wmisleading-indentation (part of -Wall), gcc 11.2.1 warns: + + In file included from test_c_compilation.c:22: + ../stb_divide.h: In function 'test': + ../stb_divide.h:316:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation] + 316 | if (show) printf("(%+11d,%+2d) ", q,r); stbdiv_check(q,r,a,b, "trunc",a); + | ^~ + ../stb_divide.h:316:45: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' + 316 | if (show) printf("(%+11d,%+2d) ", q,r); stbdiv_check(q,r,a,b, "trunc",a); + | ^~~~~~~~~~~~ + ../stb_divide.h:318:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation] + 318 | if (show) printf("(%+11d,%+2d) ", q,r); stbdiv_check(q,r,a,b, "floor",b); + | ^~ + ../stb_divide.h:318:45: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' + 318 | if (show) printf("(%+11d,%+2d) ", q,r); stbdiv_check(q,r,a,b, "floor",b); + | ^~~~~~~~~~~~ + ../stb_divide.h:320:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation] + 320 | if (show) printf("(%+11d,%+2d)\n", q,r); stbdiv_check(q,r,a,b, "euclidean",1); + | ^~ + ../stb_divide.h:320:45: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' + 320 | if (show) printf("(%+11d,%+2d)\n", q,r); stbdiv_check(q,r,a,b, "euclidean",1); + | ^~~~~~~~~~~~ + +This commit moves each call to stbdiv_check(…) to the following line to +make clear that it is unconditional and to resolve the warning. +--- + stb_divide.h | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/stb_divide.h b/stb_divide.h +index 6a51e3f2e..4c24143c4 100644 +--- a/stb_divide.h ++++ b/stb_divide.h +@@ -313,11 +313,14 @@ void test(int a, int b) + int q,r; + if (show) printf("(%+11d,%+d) | ", a,b); + q = stb_div_trunc(a,b), r = stb_mod_trunc(a,b); +- if (show) printf("(%+11d,%+2d) ", q,r); stbdiv_check(q,r,a,b, "trunc",a); ++ if (show) printf("(%+11d,%+2d) ", q,r); ++ stbdiv_check(q,r,a,b, "trunc",a); + q = stb_div_floor(a,b), r = stb_mod_floor(a,b); +- if (show) printf("(%+11d,%+2d) ", q,r); stbdiv_check(q,r,a,b, "floor",b); ++ if (show) printf("(%+11d,%+2d) ", q,r); ++ stbdiv_check(q,r,a,b, "floor",b); + q = stb_div_eucl (a,b), r = stb_mod_eucl (a,b); +- if (show) printf("(%+11d,%+2d)\n", q,r); stbdiv_check(q,r,a,b, "euclidean",1); ++ if (show) printf("(%+11d,%+2d)\n", q,r); ++ stbdiv_check(q,r,a,b, "euclidean",1); + } + + void testh(int a, int b) diff --git a/SOURCES/1196.patch b/SOURCES/1196.patch new file mode 100644 index 0000000..705f67e --- /dev/null +++ b/SOURCES/1196.patch @@ -0,0 +1,22 @@ +From 49c16b0c2a4efa72d0ce6ea05d3fa7d9e8fc6cba Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Thu, 19 Aug 2021 12:57:27 -0400 +Subject: [PATCH] Add missing initializer braces in stb_easy_font.h + +--- + stb_easy_font.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stb_easy_font.h b/stb_easy_font.h +index b66325847b..5f7511560a 100644 +--- a/stb_easy_font.h ++++ b/stb_easy_font.h +@@ -202,7 +202,7 @@ static int stb_easy_font_print(float x, float y, char *text, unsigned char color + float start_x = x; + int offset = 0; + +- stb_easy_font_color c = { 255,255,255,255 }; // use structure copying to avoid needing depending on memcpy() ++ stb_easy_font_color c = { { 255,255,255,255 } }; // use structure copying to avoid needing depending on memcpy() + if (color) { c.c[0] = color[0]; c.c[1] = color[1]; c.c[2] = color[2]; c.c[3] = color[3]; } + + while (*text && offset < vbuf_size) { diff --git a/SOURCES/1198.patch b/SOURCES/1198.patch new file mode 100644 index 0000000..b94d2be --- /dev/null +++ b/SOURCES/1198.patch @@ -0,0 +1,24 @@ +From f9a5eaee846f1a19fbcda2f5adb5238a94cbbc2f Mon Sep 17 00:00:00 2001 +From: "Benjamin A. Beasley" +Date: Tue, 24 Aug 2021 11:45:48 -0400 +Subject: [PATCH] Fix signature of dummy realloc() for STB_VORBIS_NO_CRT + +--- + stb_vorbis.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/stb_vorbis.c b/stb_vorbis.c +index 3e5c2504c..c1703426e 100644 +--- a/stb_vorbis.c ++++ b/stb_vorbis.c +@@ -594,8 +594,8 @@ enum STBVorbisError + #else // STB_VORBIS_NO_CRT + #define NULL 0 + #define malloc(s) 0 +- #define free(s) ((void) 0) +- #define realloc(s) 0 ++ #define free(p) ((void) 0) ++ #define realloc(p, s) 0 + #endif // STB_VORBIS_NO_CRT + + #include diff --git a/SOURCES/1236.patch b/SOURCES/1236.patch new file mode 100644 index 0000000..37cc507 --- /dev/null +++ b/SOURCES/1236.patch @@ -0,0 +1,37 @@ +From 5cf3af3181f7a0fb8d59ca5fe8daa011c1918d19 Mon Sep 17 00:00:00 2001 +From: Ryan Wiedemann +Date: Mon, 25 Oct 2021 22:11:48 -0600 +Subject: [PATCH] Predeclare stbhw__process struct to fix warnings + +A subset of the warnings as produced by `clang`. +``` +./../stb_herringbone_wang_tile.h:369:41: warning: declaration of 'struct stbhw__process' will not be visible outside of this function [-Wvisibility] +typedef void stbhw__process_rect(struct stbhw__process *p, int xpos, int ypos, + ^ +./../stb_herringbone_wang_tile.h:401:43: warning: incompatible pointer types passing 'stbhw__process *' (aka 'struct stbhw__process *') to parameter of type 'struct stbhw__process *' [-Wincompatible-pointer-types] + p->process_h_rect(p, xpos, ypos, a,b,c,d,e,f); + ^ +./../stb_herringbone_wang_tile.h:425:43: warning: incompatible pointer types passing 'stbhw__process *' (aka 'struct stbhw__process *') to parameter of type 'struct stbhw__process *' [-Wincompatible-pointer-types] + p->process_v_rect(p, xpos, ypos, a,b,c,d,e,f); + ^ +./../stb_herringbone_wang_tile.h:929:21: warning: incompatible pointer types assigning to 'stbhw__process_rect *' (aka 'void (*)(struct stbhw__process *, int, int, int, int, int, int, int, int)') from 'void (stbhw__process *, int, int, int, int, int, int, int, int)' (aka 'void (struct stbhw__process *, int, int, int, int, int, int, int, int)') [-Wincompatible-pointer-types] + p.process_h_rect = stbhw__parse_h_rect; + ^ ~~~~~~~~~~~~~~~~~~~ +``` +--- + stb_herringbone_wang_tile.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/stb_herringbone_wang_tile.h b/stb_herringbone_wang_tile.h +index 5517941f7a..92c238bb24 100644 +--- a/stb_herringbone_wang_tile.h ++++ b/stb_herringbone_wang_tile.h +@@ -366,6 +366,8 @@ STBHW_EXTERN const char *stbhw_get_last_error(void) + // need to try to do more sophisticated parsing of edge color + // markup or something. + ++struct stbhw__process; ++ + typedef void stbhw__process_rect(struct stbhw__process *p, int xpos, int ypos, + int a, int b, int c, int d, int e, int f); + diff --git a/SOURCES/1454.patch b/SOURCES/1454.patch new file mode 100644 index 0000000..15bc577 --- /dev/null +++ b/SOURCES/1454.patch @@ -0,0 +1,24 @@ +From 4e58258d8c434111fe2e8f1146ae0a72b0e8c554 Mon Sep 17 00:00:00 2001 +From: Neil Bickford +Date: Sat, 25 Feb 2023 05:13:25 -0800 +Subject: [PATCH] Fix nullptr dereference when a PIC file causes + stbi__pic_load_core to return 0, and the requested number of components to + stbi_load_from_memory is not 0 or 4 + +--- + stb_image.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stb_image.h b/stb_image.h +index 5e807a0a6..7e6ddeefd 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -6527,7 +6527,7 @@ static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_c + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); +- result=0; ++ return 0; + } + *px = x; + *py = y; diff --git a/SOURCES/1530.patch b/SOURCES/1530.patch new file mode 100644 index 0000000..f2fe791 --- /dev/null +++ b/SOURCES/1530.patch @@ -0,0 +1,24 @@ +From f100bfc302c0e095856c71a174714cce0a22e30a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 15:30:26 +0200 +Subject: [PATCH] Fix integer overflow + +Cast to `size_t` to avoid multiplication overflow. +Fixes #1529 +--- + stb_image.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stb_image.h b/stb_image.h +index 5e807a0a6..552129bc4 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -1207,7 +1207,7 @@ static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int chan + int img_len = w * h * channels; + stbi__uint16 *enlarged; + +- enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); ++ enlarged = (stbi__uint16 *) stbi__malloc(((size_t)img_len)*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) diff --git a/SOURCES/1532.patch b/SOURCES/1532.patch new file mode 100644 index 0000000..d527d1d --- /dev/null +++ b/SOURCES/1532.patch @@ -0,0 +1,36 @@ +From 178e1ab7684c46f233082a4f15308a54c9ae5a15 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 15:38:33 +0200 +Subject: [PATCH] Add overflow checks + +Fixes #1531 +--- + stb_image.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/stb_image.h b/stb_image.h +index 5e807a0a6..aac3653ac 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -6990,6 +6990,10 @@ static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + stride = g.w * g.h * 4; + + if (out) { ++ if (!stbi__mul2sizes_valid(layers, stride)) { ++ void *ret = stbi__load_gif_main_outofmem(&g, out, delays); ++ return ret; ++ } + void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, delays); +@@ -7006,6 +7010,10 @@ static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + delays_size = layers * sizeof(int); + } + } else { ++ if (!stbi__mul2sizes_valid(layers, stride)) { ++ void *ret = stbi__load_gif_main_outofmem(&g, out, delays); ++ return ret; ++ } + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, delays); diff --git a/SOURCES/1534.patch b/SOURCES/1534.patch new file mode 100644 index 0000000..a1278d6 --- /dev/null +++ b/SOURCES/1534.patch @@ -0,0 +1,23 @@ +From d66d0fe8c1a6ed393817791e4376374fa7f4ecc1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 15:42:23 +0200 +Subject: [PATCH] Fix int overflow + +Fixes #1533 +--- + stb_image.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stb_image.h b/stb_image.h +index 5e807a0a6..6d63ab32b 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -2222,7 +2222,7 @@ static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +- data[0] = (short) (dc * dequant[0]); ++ data[0] = (short) ((size_t)dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; diff --git a/SOURCES/1539.patch b/SOURCES/1539.patch new file mode 100644 index 0000000..49671cc --- /dev/null +++ b/SOURCES/1539.patch @@ -0,0 +1,24 @@ +From 8cfcbf7dde7705c849f4f7a5acb26f79b895fffe Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 15:57:03 +0200 +Subject: [PATCH] Fix wild address read in stbi__gif_load_next + +It seems `layers` were forgotten to include in equation. +Fixes #1538 +--- + stb_image.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stb_image.h b/stb_image.h +index 5e807a0a6..cd09ab697 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -7019,7 +7019,7 @@ static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { +- two_back = out - 2 * stride; ++ two_back = out + (layers - 2) * stride; + } + + if (delays) { diff --git a/SOURCES/1541.patch b/SOURCES/1541.patch new file mode 100644 index 0000000..9c3ce5d --- /dev/null +++ b/SOURCES/1541.patch @@ -0,0 +1,25 @@ +From 973cdc889deaae2b97d1bdf9b793b96be02b9b3c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 16:03:41 +0200 +Subject: [PATCH] Fix multi-byte read heap buffer overflow in + stbi__vertical_flip + +Fixes #1540 +--- + stb_image.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/stb_image.h b/stb_image.h +index 5e807a0a6..49c53d092 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -1447,7 +1447,8 @@ STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int * + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { +- stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); ++ int channels = req_comp ? req_comp : *comp; ++ stbi__vertical_flip_slices( result, *x, *y, *z, channels ); + } + + return result; diff --git a/SOURCES/1543.patch b/SOURCES/1543.patch new file mode 100644 index 0000000..62bcf37 --- /dev/null +++ b/SOURCES/1543.patch @@ -0,0 +1,38 @@ +From 20f77a9b7f53624014e8c7224eeb182674111bcb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 16:10:45 +0200 +Subject: [PATCH] Fix disclosure of uninitialized memory in stbi__tga_load + +Fixes #1542 +--- + stb_image.h | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/stb_image.h b/stb_image.h +index 5e807a0a6..7db6dd3df 100644 +--- a/stb_image.h ++++ b/stb_image.h +@@ -5933,7 +5933,10 @@ static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; +- stbi__getn(s, tga_row, tga_width * tga_comp); ++ if(!stbi__getn(s, tga_row, tga_width * tga_comp)) { ++ STBI_FREE(tga_data); ++ return stbi__errpuc("bad palette", "Corrupt TGA"); ++ } + } + } else { + // do I need to load a palette? +@@ -7218,7 +7221,10 @@ static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int re + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: +- stbi__getn(s, rgbe, 4); ++ if (!stbi__getn(s, rgbe, 4)) { ++ STBI_FREE(hdr_data); ++ return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); ++ } + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } diff --git a/SOURCES/1553.patch b/SOURCES/1553.patch new file mode 100644 index 0000000..b055715 --- /dev/null +++ b/SOURCES/1553.patch @@ -0,0 +1,22 @@ +From 746d207256ef408d92112a13a75aa8a42df6753f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jaroslav=20Loba=C4=8Devski?= +Date: Thu, 19 Oct 2023 16:39:06 +0200 +Subject: [PATCH] Fix `0` byte write heap buffer overflow in `start_decoder` + +Fixes #1552 +--- + stb_vorbis.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/stb_vorbis.c b/stb_vorbis.c +index 3e5c2504c0..8bc21de6b7 100644 +--- a/stb_vorbis.c ++++ b/stb_vorbis.c +@@ -952,6 +952,7 @@ static void *setup_malloc(vorb *f, int sz) + sz = (sz+7) & ~7; // round up to nearest 8 for alignment of future allocs. + f->setup_memory_required += sz; + if (f->alloc.alloc_buffer) { ++ if (sz == 0) return NULL; + void *p = (char *) f->alloc.alloc_buffer + f->setup_offset; + if (f->setup_offset + sz > f->temp_offset) return NULL; + f->setup_offset += sz; diff --git a/SOURCES/1561.patch b/SOURCES/1561.patch new file mode 100644 index 0000000..9d9e4a7 --- /dev/null +++ b/SOURCES/1561.patch @@ -0,0 +1,28 @@ +From 6e715778416b229799f85b49fa3ffc0400428f89 Mon Sep 17 00:00:00 2001 +From: "Jeff Roberts (LA)" +Date: Thu, 19 Oct 2023 17:42:58 -0700 +Subject: [PATCH] Fixed asan error on tiny input images + +--- + stb_image_resize2.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/stb_image_resize2.h b/stb_image_resize2.h +index e0c428246..1d7bed5bd 100644 +--- a/stb_image_resize2.h ++++ b/stb_image_resize2.h +@@ -1,4 +1,4 @@ +-/* stb_image_resize2 - v2.01 - public domain image resizing ++/* stb_image_resize2 - v2.02 - public domain image resizing + + by Jeff Roberts (v2) and Jorge L Rodriguez + http://github.com/nothings/stb +@@ -3697,7 +3697,7 @@ static int stbir__pack_coefficients( int num_contributors, stbir__contributors* + float * coeffs = coefficents + widest * ( num_contributors - 1 ); + + // go until no chance of clipping (this is usually less than 8 lops) +- while ( ( ( contribs->n0 + widest*2 ) >= row_width ) && ( contribs >= contributors ) ) ++ while ( ( contribs >= contributors ) && ( ( contribs->n0 + widest*2 ) >= row_width ) ) + { + // might we clip?? + if ( ( contribs->n0 + widest ) > row_width ) diff --git a/SPECS/stb.spec b/SPECS/stb.spec new file mode 100644 index 0000000..879f453 --- /dev/null +++ b/SPECS/stb.spec @@ -0,0 +1,1118 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.3.5) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 12; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +%global commit beebb24b945efdea3b9bba23affb8eb3ba8982e7 +%global snapdate 20231011 + +# We choose not to package the “stb_include” library (stb_include.h) because, +# during the package review, it was observed that it follows coding practices +# that make it dangerous to use on untrusted inputs, including but not limited +# to: +# +# - It uses of strcat/strcpy into a fixed-length buffer that is assumed (but +# not proven) to be large enough for all possible uses +# - It ignores I/O errors (possibly leading to undefined behavior from reading +# uninitialized memory), and so on. +# +# A substantial rewrite would be required to mitigate these concerns. If a +# request for this library arises, this decision may be revisited, or the +# necessary rewrite may be done and offered upstream. For now, we omit the +# library and expect it will not be missed. +%bcond_with stb_include + +Name: stb +# While the individual header-only libraries are versioned, the overall +# collection is not, and there are no releases. See: +# https://github.com/nothings/stb/issues/359 +# https://github.com/nothings/stb/issues/1101 +%global snapinfo ^%{snapdate}git%(c='%{commit}'; echo "${c:0:7}") +Version: 0%{snapinfo} +Release: %autorelease +Summary: Single-file public domain libraries for C/C++ + +# See LICENSE. +License: MIT OR Unlicense +# Additionally, the following are under different terms, but are not used; to +# make certain, they are removed in %%prep. +# +# - deprecated/rrsprintf.h, tests/caveview/stb_gl.h, and +# tests/caveview/win32/SDL_windows_main.c are Public Domain +# - tests/caveview/glext.h is MIT (only) +URL: https://github.com/nothings/stb +Source0: %{url}/archive/%{commit}/stb-%{commit}.tar.gz + +# Fix undefined behavior from array “shape-punning” +# https://github.com/nothings/stb/pull/1194 +Patch: %{url}/pull/1194.patch + +# Fix misleading indentation in stb_divide.h +# https://github.com/nothings/stb/pull/1195 +Patch: %{url}/pull/1195.patch + +# Trivial fix for array-in-structure initialization (missing braces warning) +# https://github.com/nothings/stb/pull/1196 +Patch: %{url}/pull/1196.patch + +# Fix signature of dummy realloc() for STB_VORBIS_NO_CRT +# https://github.com/nothings/stb/pull/1198 +Patch: %{url}/pull/1198.patch + +# Forward declare stbhw__process struct to fix warnings +# https://github.com/nothings/stb/pull/1236 +# +# We don’t see these warnings in the “compile tests”, but we can reproduce them +# by manually compiling tests/herringbone_map.c; a real user of the +# stb_herringbone_wang_tile library would encounter them; and inspection of the +# patch shows it to be correct. +Patch: %{url}/pull/1236.patch + +# Fixes null pointer dereference in https://github.com/nothings/stb/issues/1452 +# https://github.com/nothings/stb/pull/1454 +# +# Fixes: +# +# NULL pointer dereference in the stb_image.h +# https://github.com/nothings/stb/issues/1452 +# NULL pointer derefence in PIC loading (CVE-2023-43898) +# https://github.com/nothings/stb/issues/1521 +# Null pointer dereference in stbi__convert_format (GHSL-2023-149) +# https://github.com/nothings/stb/issues/1546 +# +# An alternative and equivalent patch is: +# +# Fix Null pointer dereference in stbi__convert_format +# https://github.com/nothings/stb/pull/1547 +Patch: %{url}/pull/1454.patch + +# Fixed asan error on tiny input images +# https://github.com/nothings/stb/pull/1561 +# +# Fixes: +# +# stb_image_resize2.h: Address Sanitizer error +# https://github.com/nothings/stb/issues/1526 +Patch: %{url}/pull/1561.patch + +# Fix integer overflow +# https://github.com/nothings/stb/pull/1530 +# +# Fixes: +# +# Integer overflow in stbi__convert_8_to_16 +# https://github.com/nothings/stb/issues/1529 +Patch: %{url}/pull/1530.patch + +# Add overflow checks +# https://github.com/nothings/stb/pull/1532 +# +# Fixes: +# +# Integer overflow in stbi__load_gif_main +# https://github.com/nothings/stb/issues/1531 +Patch: %{url}/pull/1532.patch + +# Fix int overflow +# https://github.com/nothings/stb/pull/1534 +# +# Fixes: +# +# Integer overflow in stbi__jpeg_decode_block +# https://github.com/nothings/stb/pull/1533 +Patch: %{url}/pull/1534.patch + +# Fix wild address read in stbi__gif_load_next +# https://github.com/nothings/stb/pull/1539 +# +# Fixes: +# +# Wild address read in stbi__gif_load_next (GHSL-2023-145/CVE-2023-45661) +# https://github.com/nothings/stb/issues/1538 +Patch: %{url}/pull/1539.patch + +# Fix multi-byte read heap buffer overflow in stbi__vertical_flip +# https://github.com/nothings/stb/pull/1541 +# +# Fixes: +# +# Multi-byte read heap buffer overflow in stbi__vertical_flip +# (GHSL-2023-146/CVE-2023-45662) +# https://github.com/nothings/stb/issues/1540 +Patch: %{url}/pull/1541.patch + +# Fix disclosure of uninitialized memory in stbi__tga_load +# https://github.com/nothings/stb/pull/1543 +# +# Fixes: +# +# Disclosure of uninitialized memory in stbi__tga_load +# (GHSL-2023-147/CVE-2023-45663) +# https://github.com/nothings/stb/issues/1542 +Patch: %{url}/pull/1543.patch + +# Fix double-free in stbi__load_gif_main_outofmem +# https://github.com/nothings/stb/pull/1545 +# +# Fixes: +# +# Double-free in stbi__load_gif_main_outofmem (GHSL-2023-148/CVE-2023-45664) +# https://github.com/nothings/stb/issues/1544 +# +# Rebased on top of https://github.com/nothings/stb/pull/1539. +Patch: 0001-Fix-double-free-in-stbi__load_gif_main_outofmem.patch + +# Fix possible double-free or memory leak in stbi__load_gif_main +# https://github.com/nothings/stb/pull/1549 +# +# Fixes: +# +# Possible double-free or memory leak in stbi__load_gif_main +# (GHSL-2023-150/CVE-2023-45666) +# https://github.com/nothings/stb/issues/1548 +# +# Rebased on top of https://github.com/nothings/stb/pull/1539 and +# https://github.com/nothings/stb/pull/1545. +Patch: 0002-Fix-possible-double-free-or-memory-leak-in-stbi__loa.patch + +# Fix Null pointer dereference because of an uninitialized variable +# https://github.com/nothings/stb/pull/1551 +# +# Fixes: +# +# Null pointer dereference because of an uninitialized variable +# (GHSL-2023-151/CVE-2023-45667) +# https://github.com/nothings/stb/issues/1550 +# +# Rebased on top of https://github.com/nothings/stb/pull/1541. +Patch: 0001-Fix-Null-pointer-dereference-because-of-an-uninitial.patch + +# Fix 0 byte write heap buffer overflow in start_decoder +# https://github.com/nothings/stb/pull/1553 +# +# Fixes: +# +# 0 byte write heap buffer overflow in start_decoder +# (GHSL-2023-165/CVE-2023-45675) +# https://github.com/nothings/stb/issues/1552 +Patch: %{url}/pull/1553.patch + +%global stb_c_lexer_version 0.12 +%global stb_connected_components_version 0.96 +%global stb_divide_version 0.94 +%global stb_ds_version 0.67 +%global stb_dxt_version 1.12 +%global stb_easy_font_version 1.1 +%global stb_herringbone_wang_tile_version 0.7 +%global stb_hexwave_version 0.5 +%global stb_image_version 2.28 +%global stb_image_resize_version 0.97 +%global stb_image_resize2_version 2.02 +%global stb_image_write_version 1.16 +%global stb_include_version 0.2 +%global stb_leakcheck_version 0.6 +%global stb_perlin_version 0.5 +%global stb_rect_pack_version 1.1 +%global stb_sprintf_version 1.10 +%global stb_textedit_version 1.14 +%global stb_tilemap_editor_version 0.42 +%global stb_truetype_version 1.26 +%global stb_vorbis_version 1.22 +%global stb_voxel_render_version 0.89 + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: make + +BuildRequires: /usr/bin/convert + +# No compiled binaries are installed, so this would be empty. +%global debug_package %{nil} + +%description +%{summary}. + + +%package devel +Summary: Development files for stb + +# Dependent packages should prefer to BuildRequire the -static packages for the +# specific stb libraries they use. +Provides: stb-static = %{version}-%{release} + +Requires: stb_c_lexer-devel%{?_isa} = %{stb_c_lexer_version}%{snapinfo}-%{release} +Requires: stb_c_lexer-static = %{stb_c_lexer_version}%{snapinfo}-%{release} +Requires: stb_connected_components-devel%{?_isa} = %{stb_connected_components_version}%{snapinfo}-%{release} +Requires: stb_connected_components-static = %{stb_connected_components_version}%{snapinfo}-%{release} +Requires: stb_divide-devel%{?_isa} = %{stb_divide_version}%{snapinfo}-%{release} +Requires: stb_divide-static = %{stb_divide_version}%{snapinfo}-%{release} +Requires: stb_ds-devel%{?_isa} = %{stb_ds_version}%{snapinfo}-%{release} +Requires: stb_ds-static = %{stb_ds_version}%{snapinfo}-%{release} +Requires: stb_dxt-devel%{?_isa} = %{stb_dxt_version}%{snapinfo}-%{release} +Requires: stb_dxt-static = %{stb_dxt_version}%{snapinfo}-%{release} +Requires: stb_easy_font-devel%{?_isa} = %{stb_easy_font_version}%{snapinfo}-%{release} +Requires: stb_easy_font-static = %{stb_easy_font_version}%{snapinfo}-%{release} +Requires: stb_herringbone_wang_tile-devel%{?_isa} = %{stb_herringbone_wang_tile_version}%{snapinfo}-%{release} +Requires: stb_herringbone_wang_tile-static = %{stb_herringbone_wang_tile_version}%{snapinfo}-%{release} +Requires: stb_hexwave-devel%{?_isa} = %{stb_hexwave_version}%{snapinfo}-%{release} +Requires: stb_hexwave-static = %{stb_hexwave_version}%{snapinfo}-%{release} +Requires: stb_image-devel%{?_isa} = %{stb_image_version}%{snapinfo}-%{release} +Requires: stb_image-static = %{stb_image_version}%{snapinfo}-%{release} +# For compatibility, we still depend on the subpackages for the original, +# deprecated-upstream stb_image_library in existing stable releases, but we +# drop the dependendency going forward as an acknowledgement of its status. +%if 0%{?fc39} || 0%{?fc38} || 0%{?fc37} || 0%{?el9} || 0%{?el8} || 0%{?el7} +Requires: stb_image_resize-devel%{?_isa} = %{stb_image_resize_version}%{snapinfo}-%{release} +Requires: stb_image_resize-static = %{stb_image_resize_version}%{snapinfo}-%{release} +%endif +Requires: stb_image_resize2-devel%{?_isa} = %{stb_image_resize2_version}%{snapinfo}-%{release} +Requires: stb_image_resize2-static = %{stb_image_resize2_version}%{snapinfo}-%{release} +Requires: stb_image_write-devel%{?_isa} = %{stb_image_write_version}%{snapinfo}-%{release} +Requires: stb_image_write-static = %{stb_image_write_version}%{snapinfo}-%{release} +%if %{with stb_include} +Requires: stb_include-devel%{?_isa} = %{stb_include_version}%{snapinfo}-%{release} +Requires: stb_include-static = %{stb_include_version}%{snapinfo}-%{release} +%endif +Requires: stb_leakcheck-devel%{?_isa} = %{stb_leakcheck_version}%{snapinfo}-%{release} +Requires: stb_leakcheck-static = %{stb_leakcheck_version}%{snapinfo}-%{release} +Requires: stb_perlin-devel%{?_isa} = %{stb_perlin_version}%{snapinfo}-%{release} +Requires: stb_perlin-static = %{stb_perlin_version}%{snapinfo}-%{release} +Requires: stb_rect_pack-devel%{?_isa} = %{stb_rect_pack_version}%{snapinfo}-%{release} +Requires: stb_rect_pack-static = %{stb_rect_pack_version}%{snapinfo}-%{release} +Requires: stb_sprintf-devel%{?_isa} = %{stb_sprintf_version}%{snapinfo}-%{release} +Requires: stb_sprintf-static = %{stb_sprintf_version}%{snapinfo}-%{release} +Requires: stb_textedit-devel%{?_isa} = %{stb_textedit_version}%{snapinfo}-%{release} +Requires: stb_textedit-static = %{stb_textedit_version}%{snapinfo}-%{release} +Requires: stb_tilemap_editor-devel%{?_isa} = %{stb_tilemap_editor_version}%{snapinfo}-%{release} +Requires: stb_tilemap_editor-static = %{stb_tilemap_editor_version}%{snapinfo}-%{release} +Requires: stb_truetype-devel%{?_isa} = %{stb_truetype_version}%{snapinfo}-%{release} +Requires: stb_truetype-static = %{stb_truetype_version}%{snapinfo}-%{release} +Requires: stb_vorbis-devel%{?_isa} = %{stb_vorbis_version}%{snapinfo}-%{release} +Requires: stb_vorbis-static = %{stb_vorbis_version}%{snapinfo}-%{release} +Requires: stb_voxel_render-devel%{?_isa} = %{stb_voxel_render_version}%{snapinfo}-%{release} +Requires: stb_voxel_render-static = %{stb_voxel_render_version}%{snapinfo}-%{release} + +%description devel +The stb-devel package contains libraries and header files for developing +applications that use stb. + +This is a metapackage that requires the -devel packages for all stb libraries. + + +%package -n stb_c_lexer-devel +Summary: Simplify writing parsers for C-like languages +Version: %{stb_c_lexer_version}%{snapinfo} + +Provides: stb_c_lexer-static = %{stb_c_lexer_version}%{snapinfo}-%{release} + +%description -n stb_c_lexer-devel +Lexer for making little C-like languages with recursive-descent parsers. + + +%package -n stb_connected_components-devel +Summary: Incrementally compute reachability on grids +Version: %{stb_connected_components_version}%{snapinfo} + +Provides: stb_connected_components-static = %{stb_connected_components_version}%{snapinfo}-%{release} + +%description -n stb_connected_components-devel +Finds connected components on 2D grids for testing reachability between two +points, with fast updates when changing reachability (e.g. on one machine it +was typically 0.2ms w/ 1024x1024 grid). Each grid square must be “open” or +“closed” (traversable or untraversable), and grid squares are only connected to +their orthogonal neighbors, not diagonally. + + +%package -n stb_divide-devel +Summary: More useful 32-bit modulus e.g. “Euclidean divide” +Version: %{stb_divide_version}%{snapinfo} + +Provides: stb_divide-static = %{stb_divide_version}%{snapinfo}-%{release} + +%description -n stb_divide-devel +This file provides three different consistent divide/mod pairs +implemented on top of arbitrary C/C++ division, including correct +handling of overflow of intermediate calculations: + + trunc: a/b truncates to 0, a%b has same sign as a + floor: a/b truncates to -inf, a%b has same sign as b + eucl: a/b truncates to sign(b)*inf, a%b is non-negative + + +%package -n stb_ds-devel +Summary: Typesafe dynamic array and hash tables for C, will compile in C++ +Version: %{stb_ds_version}%{snapinfo} + +Provides: stb_ds-static = %{stb_ds_version}%{snapinfo}-%{release} + +%description -n stb_ds-devel +This is a single-header-file library that provides easy-to-use dynamic arrays +and hash tables for C (also works in C++). + +For a gentle introduction: https://nothings.org/stb_ds + + +%package -n stb_dxt-devel +Summary: Fabian “ryg” Giesen’s real-time DXT compressor +Version: %{stb_dxt_version}%{snapinfo} + +Provides: stb_dxt-static = %{stb_dxt_version}%{snapinfo}-%{release} + +%description -n stb_dxt-devel +DXT1/DXT5 compressor. + + +%package -n stb_easy_font-devel +Summary: Quick-and-dirty easy-to-deploy bitmap font for printing frame rate, etc +Version: %{stb_easy_font_version}%{snapinfo} + +Provides: stb_easy_font-static = %{stb_easy_font_version}%{snapinfo}-%{release} + +%description -n stb_easy_font-devel + Easy-to-deploy, + reasonably compact, + extremely inefficient performance-wise, + crappy-looking, + ASCII-only, + bitmap font for use in 3D APIs. + +Intended for when you just want to get some text displaying in a 3D app as +quickly as possible. + +Doesn’t use any textures, instead builds characters out of quads. + + +%package -n stb_herringbone_wang_tile-devel +Summary: Herringbone Wang tile map generator +Version: %{stb_herringbone_wang_tile_version}%{snapinfo} + +Provides: stb_herringbone_wang_tile-static = %{stb_herringbone_wang_tile_version}%{snapinfo}-%{release} + +%description -n stb_herringbone_wang_tile-devel +This library is an SDK for Herringbone Wang Tile generation: + + http://nothings.org/gamedev/herringbone + +The core design is that you use this library offline to generate a “template” +of the tiles you’ll create. You then edit those tiles, then load the created +tile image file back into this library and use it at runtime to generate +“maps”. + +You cannot load arbitrary tile image files with this library; it is only +designed to load image files made from the template it created. It stores a +binary description of the tile sizes & constraints in a few pixels, and uses +those to recover the rules, rather than trying to parse the tiles themselves. + +You *can* use this library to generate from arbitrary tile sets, but only by +loading the tile set and specifying the constraints explicitly yourself. + + +%package -n stb_hexwave-devel +Summary: Audio waveform synthesizer +Version: %{stb_hexwave_version}%{snapinfo} + +Provides: stb_hexwave-static = %{stb_hexwave_version}%{snapinfo}-%{release} + +%description -n stb_hexwave-devel +A flexible anti-aliased (bandlimited) digital audio oscillator. + +This library generates waveforms of a variety of shapes made of line segments. +It does not do envelopes, LFO effects, etc.; it merely tries to solve the +problem of generating an artifact-free morphable digital waveform with a +variety of spectra, and leaves it to the user to rescale the waveform and mix +multiple voices, etc. + + +%package -n stb_image-devel +Summary: Image loading/decoding from file/memory: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC +Version: %{stb_image_version}%{snapinfo} + +Provides: stb_image-static = %{stb_image_version}%{snapinfo}-%{release} + +%description -n stb_image-devel +%{summary}. + +Primarily of interest to game developers and other people who can avoid +problematic images and only need the trivial interface. + + +# We still package (and have chosen not to deprecate) the original +# stb_image_resize even though upstream has deprecated it. We do not want to +# drive dependent packages back to bundling. +%package -n stb_image_resize-devel +Summary: Resize images larger/smaller with good quality (original version) +Version: %{stb_image_resize_version}%{snapinfo} + +Provides: stb_image_resize-static = %{stb_image_resize_version}%{snapinfo}-%{release} + +%description -n stb_image_resize-devel +Image resizing. + +Written with emphasis on usability, portability, and efficiency. (No SIMD or +threads, so it be easily outperformed by libs that use those.) Only scaling and +translation is supported, no rotations or shears. Easy API downsamples +w/Mitchell filter, upsamples w/cubic interpolation. + +This is the original version of the stb_image_resize library. It has been +deprecated by its developer; consider porting to stb_image_resize2 instead. + + +%package -n stb_image_resize2-devel +Summary: Resize images larger/smaller with good quality +Version: %{stb_image_resize2_version}%{snapinfo} + +Provides: stb_image_resize2-static = %{stb_image_resize2_version}%{snapinfo}-%{release} + +%description -n stb_image_resize2-devel +Image resizing. + + +%package -n stb_image_write-devel +Summary: Image writing to disk: PNG, TGA, BMP +Version: %{stb_image_write_version}%{snapinfo} + +Provides: stb_image_write-static = %{stb_image_write_version}%{snapinfo}-%{release} + +%description -n stb_image_write-devel +This header file is a library for writing images to C stdio or a callback. + +The PNG output is not optimal; it is 20-50%% larger than the file written by a +decent optimizing implementation; though providing a custom zlib compress +function (see STBIW_ZLIB_COMPRESS) can mitigate that. This library is designed +for source code compactness and simplicity, not optimal image file size or +run-time performance. + + +%if %{with stb_include} +%package -n stb_include-devel +Summary: Implement recursive #include support, particularly for GLSL +Version: %{stb_include_version}%{snapinfo} + +Provides: stb_include-static = %{stb_include_version}%{snapinfo}-%{release} + +%description -n stb_include-devel +This program parses a string and replaces lines of the form + #include "foo" +with the contents of a file named "foo". It also embeds the appropriate #line +directives. Note that all include files must reside in the location specified +in the path passed to the API; it does not check multiple directories. + +If the string contains a line of the form + #inject +then it will be replaced with the contents of the string ‘inject’ passed to the +API. +%endif + + +%package -n stb_leakcheck-devel +Summary: Quick-and-dirty malloc/free leak-checking +Version: %{stb_leakcheck_version}%{snapinfo} + +Provides: stb_leakcheck-static = %{stb_leakcheck_version}%{snapinfo}-%{release} + +%description -n stb_leakcheck-devel +%{summary}. + + +%package -n stb_perlin-devel +Summary: Perlin’s revised simplex noise w/ different seeds +Version: %{stb_perlin_version}%{snapinfo} + +Provides: stb_perlin-static = %{stb_perlin_version}%{snapinfo}-%{release} + +%description -n stb_perlin-devel +%{summary}. + + +%package -n stb_rect_pack-devel +Summary: Simple 2D rectangle packer with decent quality +Version: %{stb_rect_pack_version}%{snapinfo} + +Provides: stb_rect_pack-static = %{stb_rect_pack_version}%{snapinfo}-%{release} + +%description -n stb_rect_pack-devel +Useful for e.g. packing rectangular textures into an atlas. Does not do +rotation. + +Not necessarily the awesomest packing method, but better than the totally naive +one in stb_truetype (which is primarily what this is meant to replace). + +No memory allocations; uses qsort() and assert() from stdlib. Can override +those by defining STBRP_SORT and STBRP_ASSERT. + +This library currently uses the Skyline Bottom-Left algorithm. + +Please note: better rectangle packers are welcome! Please implement them to the +same API, but with a different init function. + + +%package -n stb_sprintf-devel +Summary: Fast sprintf, snprintf for C/C++ +Version: %{stb_sprintf_version}%{snapinfo} + +Provides: stb_sprintf-static = %{stb_sprintf_version}%{snapinfo}-%{release} + +%description -n stb_sprintf-devel +This is a full sprintf replacement that supports everything that the C runtime +sprintfs support, including float/double, 64-bit integers, hex floats, field +parameters (%%*.*d stuff), length reads backs, etc. + +Why would you need this if sprintf already exists? Well, first off, it’s *much* +faster (see below). It’s also much smaller than the CRT versions +code-space-wise. We’ve also added some simple improvements that are super handy +(commas in thousands, callbacks at buffer full, for example). Finally, the +format strings for MSVC and GCC differ for 64-bit integers (among other small +things), so this lets you use the same format strings in cross platform code. + +It uses the standard single file trick of being both the header file and the +source itself. If you just include it normally, you just get the header file +function definitions. To get the code, you include it from a C or C++ file and +define STB_SPRINTF_IMPLEMENTATION first. + +It only uses va_args macros from the C runtime to do its work. It does cast +doubles to S64s and shifts and divides U64s, which does drag in CRT code on +most platforms. + +It compiles to roughly 8K with float support, and 4K without. As a comparison, +when using MSVC static libs, calling sprintf drags in 16K. + + +%package -n stb_textedit-devel +Summary: Guts of a text editor for games etc., implementing them from scratch +Version: %{stb_textedit_version}%{snapinfo} + +Provides: stb_textedit-static = %{stb_textedit_version}%{snapinfo}-%{release} + +%description -n stb_textedit-devel +This C header file implements the guts of a multi-line text-editing widget; you +implement display, word-wrapping, and low-level string insertion/deletion, and +stb_textedit will map user inputs into insertions & deletions, plus updates to +the cursor position, selection state, and undo state. + +It is intended for use in games and other systems that need to build their own +custom widgets and which do not have heavy text-editing requirements (this +library is not recommended for use for editing large texts, as its performance +does not scale and it has limited undo). + +Non-trivial behaviors are modelled after Windows text controls. + + +%package -n stb_tilemap_editor-devel +Summary: Embeddable tilemap editor +Version: %{stb_tilemap_editor_version}%{snapinfo} + +Provides: stb_tilemap_editor-static = %{stb_tilemap_editor_version}%{snapinfo}-%{release} + +%description -n stb_tilemap_editor-devel +Embeddable tilemap editor for C/C++. + + +%package -n stb_truetype-devel +Summary: Parse, decode, and rasterize characters from TrueType fonts +Version: %{stb_truetype_version}%{snapinfo} + +Provides: stb_truetype-static = %{stb_truetype_version}%{snapinfo}-%{release} + +%description -n stb_truetype-devel +%{summary}. +======================================================================= + + NO SECURITY GUARANTEE -- DO NOT USE THIS ON UNTRUSTED FONT FILES + +This library does no range checking of the offsets found in the file, +meaning an attacker can use it to read arbitrary memory. + +======================================================================= + +This library processes TrueType files: + • parse files + • extract glyph metrics + • extract glyph shapes + • render glyphs to one-channel bitmaps with antialiasing (box filter) + • render glyphs to one-channel SDF bitmaps (signed-distance field/function) + + +%package -n stb_vorbis-devel +Summary: Decode Ogg Vorbis files from file/memory to float/16-bit signed output +Version: %{stb_vorbis_version}%{snapinfo} + +Provides: stb_vorbis-static = %{stb_vorbis_version}%{snapinfo}-%{release} + +%description -n stb_vorbis-devel +Ogg Vorbis audio decoder. + + +%package -n stb_voxel_render-devel +Summary: Helps render large-scale “voxel” worlds for games +Version: %{stb_voxel_render_version}%{snapinfo} + +Provides: stb_voxel_render-static = %{stb_voxel_render_version}%{snapinfo}-%{release} + +%description -n stb_voxel_render-devel +This library helps render large-scale “voxel” worlds for games, in this case, +one with blocks that can have textures and that can also be a few shapes other +than cubes. + + Video introduction: + http://www.youtube.com/watch?v=2vnTtiLrV1w + + Minecraft-viewer sample app (not very simple though): + http://github.com/nothings/stb/tree/master/tests/caveview + +It works by creating triangle meshes. The library includes + + - converter from dense 3D arrays of block info to vertex mesh + - vertex & fragment shaders for the vertex mesh + - assistance in setting up shader state + +For portability, none of the library code actually accesses the 3D graphics +API. (At the moment, it’s not actually portable since the shaders are GLSL +only, but patches are welcome.) + +You have to do all the caching and tracking of vertex buffers yourself. +However, you could also try making a game with a small enough world that it’s +fully loaded rather than streaming. Currently the preferred vertex format is 20 +bytes per quad. There are designs to allow much more compact formats with a +slight reduction in shader features, but no roadmap for actually implementing +them. + + +%package doc +Summary: Documentation for stb +BuildArch: noarch + +%description doc +Documentation for stb. + + +%prep +%autosetup -n stb-%{commit} -p1 + +# Append to OS build flags rather than overriding them +# +# Instead of hard-coding C++ standard and calling the C compiler, defer to the +# default and call the C++ compiler. +# +# When upstream says CPPFLAGS, they +# mean C++ flags, i.e. CXXFLAGS, not “C PreProcessor Flags” as is common in +# autoconf-influenced projects. +sed -r -i \ + -e 's/([[:alpha:]]+FLAGS[[:blank:]]*)=/\1+=/' \ + -e 's/(\$\(CC\))(.*)-std=[^[:blank:]]+/\$\(CXX\)\2/' \ + -e 's/CPPFLAGS/CXXFLAGS/' tests/Makefile + +# Add a dummy main(); how does this one work upstream?! Note that omitting +# parameter names is a C++-ism. +echo 'int main(int, char *[]) { return 0; }' >> tests/test_cpp_compilation.cpp + +# Remove any pre-compiled Windows executables +find . -type f -name '*.exe' -print -delete + +# Remove some unused parts of the source tree that could contribute different +# (but acceptable) license terms if they were used—just to prove that we do not +# use them. +rm -rvf tests/caveview +find deprecated -type f ! -name 'stb_image_resize.h' -print -delete + +%if %{without stb_include} +sed -r -i '/#include[[:blank:]]+"stb_include.h"/d' tests/test_c_compilation.c +%endif + + +%build +# There is no compiled code to install, since all stb libraries are +# header-only. We do need to build the tests. +%set_build_flags +%make_build -C tests + + +%install +# Installing a “.c” file in /usr/include is unconventional, but correct and not +# unprecedented. Any .c file in stb is meant to be #include’d and used as a +# header-only library, just as the “.h” files in the other stb libraries. The +# only difference is the file extension. +# +# Since these are designed to be copied into dependent package source trees, +# there is no convention on include paths. Most projects end up using “#include +# ” or “#include ”, so we install to +# %%{_includedir}/stb/stb_foo.h and %%{_includedir}/stb_foo.h, with the latter +# as a symbolic link to the former. This means most projects can unbundle the +# library without having to make their own local symlinks or patch their +# sources. +install -t '%{buildroot}%{_includedir}/stb' -p -m 0644 -D \ + stb_*.h stb_*.c deprecated/stb_image_resize.h +%if %{without stb_include} +rm -vf '%{buildroot}%{_includedir}/stb/stb_include.h' +%endif +pushd '%{buildroot}%{_includedir}' +ln -sv stb/stb_*.? . +popd + + +%check +# The tests in tests/Makefile are largely just “will it compile” tests. There +# are some other files with main routines under tests/, but they have neither +# Makefile targets nor instructions on how to build or run them or what to +# expect them to do. We don’t dig through these sources to try to guess what to +# do with them. + +# We can run image_write_test and confirm the output images are valid. +rm -vf output +mkdir -p output +./tests/image_write_test +# We assume that if ImageMagick can read the output images, then they are valid. +for img in wr6x5_flip.bmp wr6x5_flip.jpg wr6x5_flip.tga wr6x5_regular.hdr \ + wr6x5_regular.png wr6x5_flip.hdr wr6x5_flip.png wr6x5_regular.bmp \ + wr6x5_regular.jpg wr6x5_regular.tga +do + convert "output/${img}" 'output/dummy.bmp' +done + +# As a sanity check, verify that all of the subpackage version numbers appear +# in the corresponding headers. +while read -r version header +do + %{?!with_stb_include:if [ "${header}" = 'stb_include.h' ]; then continue; fi} + # The minor version may be zero-padded in the header. + grep -E "$( + echo "${version}" | + sed -r 's/([[:digit:]]+)\.([[:digit:]]+)/\\bv\1\\.0*\2\\b/' + )" "%{buildroot}%{_includedir}/${header}" >/dev/null +done <<'EOF' +%{stb_c_lexer_version} stb_c_lexer.h +%{stb_connected_components_version} stb_connected_components.h +%{stb_divide_version} stb_divide.h +%{stb_ds_version} stb_ds.h +%{stb_dxt_version} stb_dxt.h +%{stb_easy_font_version} stb_easy_font.h +%{stb_herringbone_wang_tile_version} stb_herringbone_wang_tile.h +%{stb_hexwave_version} stb_hexwave.h +%{stb_image_version} stb_image.h +%{stb_image_resize_version} stb_image_resize.h +%{stb_image_resize2_version} stb_image_resize2.h +%{stb_image_write_version} stb_image_write.h +%{stb_include_version} stb_include.h +%{stb_leakcheck_version} stb_leakcheck.h +%{stb_perlin_version} stb_perlin.h +%{stb_rect_pack_version} stb_rect_pack.h +%{stb_sprintf_version} stb_sprintf.h +%{stb_textedit_version} stb_textedit.h +%{stb_tilemap_editor_version} stb_tilemap_editor.h +%{stb_truetype_version} stb_truetype.h +%{stb_vorbis_version} stb_vorbis.c +%{stb_voxel_render_version} stb_voxel_render.h +EOF + + +%files devel +# Empty metapackage + + +%files doc +%license LICENSE +%doc docs +%doc README.md +%doc tests/tilemap_editor_integration_example.c + + +%files -n stb_c_lexer-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_c_lexer.h +%{_includedir}/stb_c_lexer.h + + +%files -n stb_connected_components-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_connected_components.h +%{_includedir}/stb_connected_components.h + + +%files -n stb_divide-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_divide.h +%{_includedir}/stb_divide.h + + +%files -n stb_ds-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_ds.h +%{_includedir}/stb_ds.h + + +%files -n stb_dxt-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_dxt.h +%{_includedir}/stb_dxt.h + + +%files -n stb_easy_font-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_easy_font.h +%{_includedir}/stb_easy_font.h + + +%files -n stb_herringbone_wang_tile-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_herringbone_wang_tile.h +%{_includedir}/stb_herringbone_wang_tile.h + + +%files -n stb_hexwave-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_hexwave.h +%{_includedir}/stb_hexwave.h + + +%files -n stb_image-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_image.h +%{_includedir}/stb_image.h + + +%files -n stb_image_resize-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_image_resize.h +%{_includedir}/stb_image_resize.h + + +%files -n stb_image_resize2-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_image_resize2.h +%{_includedir}/stb_image_resize2.h + + +%files -n stb_image_write-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_image_write.h +%{_includedir}/stb_image_write.h + + +%if %{with stb_include} +%files -n stb_include-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_include.h +%{_includedir}/stb_include.h +%endif + + +%files -n stb_leakcheck-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_leakcheck.h +%{_includedir}/stb_leakcheck.h + + +%files -n stb_perlin-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_perlin.h +%{_includedir}/stb_perlin.h + + +%files -n stb_rect_pack-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_rect_pack.h +%{_includedir}/stb_rect_pack.h + + +%files -n stb_sprintf-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_sprintf.h +%{_includedir}/stb_sprintf.h + + +%files -n stb_textedit-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_textedit.h +%{_includedir}/stb_textedit.h + + +%files -n stb_tilemap_editor-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_tilemap_editor.h +%{_includedir}/stb_tilemap_editor.h + + +%files -n stb_truetype-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_truetype.h +%{_includedir}/stb_truetype.h + + +%files -n stb_vorbis-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_vorbis.c +%{_includedir}/stb_vorbis.c + + +%files -n stb_voxel_render-devel +%license LICENSE +# Directory has shared ownership across stb subpackages: +%dir %{_includedir}/stb +%{_includedir}/stb/stb_voxel_render.h +%{_includedir}/stb_voxel_render.h + + +%changelog +* Sun Jan 14 2024 Arkady L. Shane - 0^20231011gitbeebb24-12 +- Rebuilt for MSVSphere 9.3 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-12 +- stb_vorbis: fix GHSL-2023-165 / fix CVE-2023-45675 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-11 +- stb_image: fix GHSL-2023-151 / fix CVE-2023-45667 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-10 +- stb_image: fix GHSL-2023-150 / fix CVE-2023-45666 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-9 +- Document another bug, PR, and name (GHSL-2023-149) for CVE-2023-43898 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-8 +- stb_image: fix GHSL-2023-148 / fix CVE-2023-45664 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-7 +- stb_image: fix GHSL-2023-147 / fix CVE-2023-45663 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-6 +- stb_image: fix GHSL-2023-146 / fix CVE-2023-45662 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-5 +- stb_image: fix GHSL-2023-145 / fix CVE-2023-45661 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-4 +- Document that 1454.patch fixes CVE-2023-43898 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-3 +- Backport a PR fixing undefined behavior in stb_image_resize2 + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-2 +- Backport three PR’s fixing undefined behavior in stb_image + +* Wed Oct 25 2023 Benjamin A. Beasley - 0^20231011gitbeebb24-1 +- Update to 0^beebb24git20231011 (minor C99 fixes) + +* Tue Oct 10 2023 Benjamin A. Beasley - 0^20231009gitc4bbb6e-2 +- Fedora, EPEL9+: drop the initial “0.” from the Release + +* Tue Oct 10 2023 Benjamin A. Beasley - 0^20231009gitc4bbb6e-0.1 +- Update to 0^20231009gitc4bbb6e +- A new stb_image_resize2 library is introduced +- Upstream has deprecated stb_image_resize, but we still package it + +* Sat Feb 25 2023 Benjamin A. Beasley - 0^20230129git5736b15-0.2 +- Fix null pointer dereference in stb_image + +* Tue Jan 31 2023 Benjamin A. Beasley - 0^20230129git5736b15-0.1 +- Update to 5736b1 (version history and README updates) + +* Tue Jan 31 2023 Benjamin A. Beasley - 0^20230129git6199bf7-0.1 +- Update to 6199bf7 (stb_image 2.28) +- Security-related patches for stb_image have been merged upstream, and + there are other bugfixes. + +* Tue Jan 31 2023 Benjamin A. Beasley - 0^20220908git8b5f1f3-0.4 +- Patch in a candidate fix for ossfuzz issue 24232 +- Improves handling of certain invalid PNGs by stb_image + +* Sat Sep 10 2022 Benjamin A. Beasley - 0^20220908git8b5f1f3-0.3 +- A few improved descriptions + +* Sat Sep 10 2022 Benjamin A. Beasley - 0^20220908git8b5f1f3-0.2 +- Improved summaries based on upstream’s README.md + +* Sat Sep 10 2022 Benjamin A. Beasley - 0^20220908git8b5f1f3-0.1 +- Update to 8b5f1f3 +- The stb_perlin-devel subpackage has been restored, as upstream believes + all relevant patents are now expired. + +* Sat Sep 10 2022 Benjamin A. Beasley - 0^20210910gitaf1a5bc-0.4 +- Update License to SPDX + +* Sat Sep 10 2022 Benjamin A. Beasley - 0^20210910gitaf1a5bc-0.3 +- Reword spec file note on stb_include + +* Wed Apr 20 2022 Benjamin A. Beasley - 0^20210910gitaf1a5bc-0.2 +- Security fix for CVE-2022-28041 (fix RHBZ#2077020, fix RBHZ#2077019) + +* Wed Apr 20 2022 Benjamin A. Beasley - 0^20210910gitaf1a5bc-0.1 +- Switch to modern snapshot versioning + +* Wed Apr 20 2022 Benjamin A. Beasley - 0-0.11 +- Stop numbering patches + +* Wed Apr 20 2022 Benjamin A. Beasley - 0-0.10 +- Revert "Work around no ImageMagick on EPEL9" + +* Mon Dec 06 2021 Benjamin A. Beasley - 0-0.9 +- Work around no ImageMagick on EPEL9 + +* Tue Oct 26 2021 Benjamin A. Beasley - 0-0.8 +- Apply a patch for warnings in stb_herringbone_wang_tile + +* Fri Oct 22 2021 Benjamin A. Beasley - 0-0.7 +- Security fix for CVE-2021-42715 and CVE-2021-42716 + +* Fri Oct 22 2021 Benjamin A. Beasley - 0-0.6 +- Update to af1a5bc + +* Fri Oct 22 2021 Benjamin A. Beasley - 0-0.5 +- Reduce macro indirection in the spec file + +* Thu Sep 09 2021 Benjamin A. Beasley - 0-0.4 +- Update to c0c9826 (fix RHBZ#2002436) + +* Tue Aug 24 2021 Benjamin A. Beasley - 0-0.3 +- Fix signature of dummy realloc() for STB_VORBIS_NO_CRT + +* Mon Aug 23 2021 Benjamin A. Beasley - 0-0.2 +- Use symlinks so including "stb_foo.h" and "stb/stb_foo.h" both work + +* Mon Aug 23 2021 Benjamin A. Beasley - 0-0.1 +- Initial package