diff --git a/.gitignore b/.gitignore index c324909..8dcdd79 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /aha-0.4.10.6.tar.gz /aha-0.5.tar.gz +/aha-0.5.1.tar.gz diff --git a/0000-fix-null-pointer-dereference.patch b/0000-fix-null-pointer-dereference.patch new file mode 100644 index 0000000..ef4206e --- /dev/null +++ b/0000-fix-null-pointer-dereference.patch @@ -0,0 +1,151 @@ +From a340963e0c40f3ea85fea911c79fbaaa5af93e27 Mon Sep 17 00:00:00 2001 +From: suve +Date: Thu, 9 Jun 2022 15:46:20 +0200 +Subject: [PATCH 1/2] Check if 24-bit colour codes contain 3 arguments + +--- + aha.c | 64 ++++++++++++++++++++++++++--------------------------------- + 1 file changed, 28 insertions(+), 36 deletions(-) + +diff --git a/aha.c b/aha.c +index 46e43c0..bf22373 100644 +--- a/aha.c ++++ b/aha.c +@@ -833,25 +833,21 @@ int main(int argc,char* args[]) + if (momelem->value == 38 && + momelem->next && + momelem->next->value == 2 && +- momelem->next->next)// 38;2; -> 24 Bit ++ momelem->next->next && ++ momelem->next->next->next && ++ momelem->next->next->next->next)// 38;2;;; -> 24 Bit + { +- momelem = momelem->next->next; +- pelem r,g,b; +- r = momelem; +- momelem = momelem->next; +- g = momelem; +- if ( momelem ) +- momelem = momelem->next; +- b = momelem; +- if ( r && g && b ) +- { +- state.highlighted = 0; +- state.fc_colormode = MODE_24BIT; +- *dest = +- (r->value & 255) * 65536 + +- (g->value & 255) * 256 + +- (b->value & 255); +- } ++ pelem r = momelem->next->next; ++ pelem g = r->next; ++ pelem b = g->next; ++ momelem = b; ++ ++ state.highlighted = 0; ++ state.fc_colormode = MODE_24BIT; ++ *dest = ++ (r->value & 255) * 65536 + ++ (g->value & 255) * 256 + ++ (b->value & 255); + } + else + { +@@ -901,25 +897,21 @@ int main(int argc,char* args[]) + if (momelem->value == 48 && + momelem->next && + momelem->next->value == 2 && +- momelem->next->next)// 48;2; -> 24 Bit ++ momelem->next->next && ++ momelem->next->next->next && ++ momelem->next->next->next->next)// 48;2;;; -> 24 Bit + { +- momelem = momelem->next->next; +- pelem r,g,b; +- r = momelem; +- momelem = momelem->next; +- g = momelem; +- if ( momelem ) +- momelem = momelem->next; +- b = momelem; +- if ( r && g && b ) +- { +- state.bc_colormode = MODE_24BIT; +- state.highlighted = 0; +- *dest = +- (r->value & 255) * 65536 + +- (g->value & 255) * 256 + +- (b->value & 255); +- } ++ pelem r = momelem->next->next; ++ pelem g = r->next; ++ pelem b = g->next; ++ momelem = b; ++ ++ state.bc_colormode = MODE_24BIT; ++ state.highlighted = 0; ++ *dest = ++ (r->value & 255) * 65536 + ++ (g->value & 255) * 256 + ++ (b->value & 255); + } + else + { + +From 1b8b994b058920cdc2fe144dca3243bacf1d49b2 Mon Sep 17 00:00:00 2001 +From: suve +Date: Thu, 9 Jun 2022 15:55:29 +0200 +Subject: [PATCH 2/2] Add a helper function to avoid ->next checks + +--- + aha.c | 23 +++++++++++++---------- + 1 file changed, 13 insertions(+), 10 deletions(-) + +diff --git a/aha.c b/aha.c +index bf22373..2bfebb7 100644 +--- a/aha.c ++++ b/aha.c +@@ -138,6 +138,15 @@ pelem parseInsert(char* s) + return firstelem; + } + ++int parseDepthAtLeast(pelem elem, unsigned int wanted) { ++ while (elem != NULL) { ++ if (wanted == 0) return 1; ++ elem = elem->next; ++ --wanted; ++ } ++ return 0; ++} ++ + void deleteParse(pelem elem) + { + while (elem!=NULL) +@@ -831,11 +840,8 @@ int main(int argc,char* args[]) + } + else + if (momelem->value == 38 && +- momelem->next && +- momelem->next->value == 2 && +- momelem->next->next && +- momelem->next->next->next && +- momelem->next->next->next->next)// 38;2;;; -> 24 Bit ++ parseDepthAtLeast(momelem, 4) && ++ momelem->next->value == 2)// 38;2;;; -> 24 Bit + { + pelem r = momelem->next->next; + pelem g = r->next; +@@ -895,11 +901,8 @@ int main(int argc,char* args[]) + } + else + if (momelem->value == 48 && +- momelem->next && +- momelem->next->value == 2 && +- momelem->next->next && +- momelem->next->next->next && +- momelem->next->next->next->next)// 48;2;;; -> 24 Bit ++ parseDepthAtLeast(momelem, 4) && ++ momelem->next->value == 2)// 48;2;;; -> 24 Bit + { + pelem r = momelem->next->next; + pelem g = r->next; diff --git a/aha.spec b/aha.spec index 4617ef2..e5c3e7e 100644 --- a/aha.spec +++ b/aha.spec @@ -1,13 +1,21 @@ Name: aha -Version: 0.5 -Release: 1%{?dist} Summary: Convert terminal output to HTML +License: MPL-1.1 OR LGPL-2.0-or-later + +Version: 0.5.1 +Release: 15%{?dist} -License: MPLv1.1 or LGPLv2+ URL: https://github.com/theZiz/aha Source0: %{URL}/archive/%{version}/%{name}-%{version}.tar.gz -BuildRequires: gcc make +# Fix a null pointer dereference when interpreting +# invalid 24-bit color code escape sequences. +# +# Submitted upstream: https://github.com/theZiz/aha/pull/97 +Patch0: 0000-fix-null-pointer-dereference.patch + +BuildRequires: gcc +BuildRequires: make %description @@ -17,7 +25,7 @@ and produces an HTML rendition of the original text. %prep -%setup -q +%autosetup -p1 # Extract license header from source code cat aha.c | awk '1;/\*\//{exit}' > LICENSE @@ -33,11 +41,74 @@ cat aha.c | awk '1;/\*\//{exit}' > LICENSE %files %license LICENSE +%license LICENSE.MPL1.1 LICENSE.LGPLv2+ %{_bindir}/%{name} %{_mandir}/man1/%{name}.* %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 0.5.1-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 0.5.1-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 0.5.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Aug 08 2024 Artur Frenszek-Iwicki - 0.5.1-12 +- Convert License tag to SPDX +- Include full license texts in the package + +* Wed Jul 17 2024 Fedora Release Engineering - 0.5.1-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 0.5.1-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 0.5.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 0.5.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 0.5.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jul 20 2022 Fedora Release Engineering - 0.5.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jul 11 2022 Artur Frenszek-Iwicki - 0.5.1-5 +- Add a patch to fix segfault because of null pointer dereference + +* Wed Jan 19 2022 Fedora Release Engineering - 0.5.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 0.5.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jan 25 2021 Fedora Release Engineering - 0.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Sep 10 2020 Artur Frenszek-Iwicki - 0.5.1-1 +- Update to latest upstream release + +* Fri Jul 31 2020 Fedora Release Engineering - 0.5-6 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 0.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jan 28 2020 Fedora Release Engineering - 0.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Fedora Release Engineering - 0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 0.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Sat Oct 27 2018 Artur Iwicki - 0.5-1 - Update to latest upstream release diff --git a/sources b/sources index 97ad0fa..3141ff5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (aha-0.5.tar.gz) = 2fbf0be928d8ea0491f6710d96eddd135253cadce6cc8c00f342e03e030ee16a3ff1eb6a559740cdd642b074c9e4e3fd9a76412272ffeb0b7bb419b0dcb6dbc1 +SHA512 (aha-0.5.1.tar.gz) = 0eb88e681208c0956e344d6574f9d7ba155d38bfb386d0a9f17022c5e925fb16d0efb6aa04804191b4cac1697a87a0f16ba51bcd97b6135cc7606046eaf89288