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 d5c3147..e5c3e7e 100644 --- a/aha.spec +++ b/aha.spec @@ -1,13 +1,21 @@ Name: aha -Version: 0.5.1 -Release: 3%{?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,49 @@ 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