Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
Artur Frenszek-Iwicki
12afb44593 Add a patch to fix null pointer dereference 2022-07-11 12:54:36 +02:00
2 changed files with 167 additions and 5 deletions

View file

@ -0,0 +1,151 @@
From a340963e0c40f3ea85fea911c79fbaaa5af93e27 Mon Sep 17 00:00:00 2001
From: suve <veg@svgames.pl>
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;<n> -> 24 Bit
+ momelem->next->next &&
+ momelem->next->next->next &&
+ momelem->next->next->next->next)// 38;2;<r>;<g>;<b> -> 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;<n> -> 24 Bit
+ momelem->next->next &&
+ momelem->next->next->next &&
+ momelem->next->next->next->next)// 48;2;<r>;<g>;<b> -> 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 <veg@svgames.pl>
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;<r>;<g>;<b> -> 24 Bit
+ parseDepthAtLeast(momelem, 4) &&
+ momelem->next->value == 2)// 38;2;<r>;<g>;<b> -> 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;<r>;<g>;<b> -> 24 Bit
+ parseDepthAtLeast(momelem, 4) &&
+ momelem->next->value == 2)// 48;2;<r>;<g>;<b> -> 24 Bit
{
pelem r = momelem->next->next;
pelem g = r->next;

View file

@ -1,13 +1,21 @@
Name: aha
Version: 0.5.1
Release: 3%{?dist}
Summary: Convert terminal output to HTML
License: MPLv1.1 or LGPLv2+
Version: 0.5.1
Release: 4%{?dist}
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
@ -38,6 +46,9 @@ cat aha.c | awk '1;/\*\//{exit}' > LICENSE
%changelog
* Mon Jul 11 2022 Artur Frenszek-Iwicki <fedora@svgames.pl> - 0.5.1-4
- Add a patch to fix segfault because of null pointer dereference
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild