Skip to content

Commit 5464acf

Browse files
committed
app-text/aha: Fix null pointer dereference bug
Applied squashed commit from theZiz/aha#97 that prevents null pointer dereference when parsing invalid 24-bit colour code sequences. Signed-off-by: Zoltan Puskas <[email protected]>
1 parent 58c5da0 commit 5464acf

File tree

3 files changed

+112
-6
lines changed

3 files changed

+112
-6
lines changed

app-text/aha/Manifest

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
AUX aha-0.5.1-null-ptr-dereference-fix.patch 2937 BLAKE2B 6806292fa4e1c97fe620fa692e4d22e6e952f329aa95b70f00d80f25021cad3d352af529dd6b77a6dd3668fb8646b459c9ad1409afe7edd4b4d73e2837735912 SHA512 240066fc094214290cfb49f403cdf654e29b1e3574562f3fc749bfc49f9ce20dae997c538a826889ef2a7c481b1eefabdc5f0033f0f23271687eecb6031f4767
12
DIST aha-0.5.1.tar.gz 394410 BLAKE2B 7276219068a8e496b41a953f4cdfc130b85778b44d194fedb63b0f0d921db0efcf0f62fae52ec580ac1462e3b03edd6ad97dab7d7ff2c138ef300824efbad111 SHA512 0eb88e681208c0956e344d6574f9d7ba155d38bfb386d0a9f17022c5e925fb16d0efb6aa04804191b4cac1697a87a0f16ba51bcd97b6135cc7606046eaf89288
2-
EBUILD aha-0.5.1.ebuild 463 BLAKE2B 5e642b76d639b1d8891731a7d15195ab22ede52d5346e5eeedf79723d3690b80dd3d9c72f305ab92fe3659fd8b46a825498b758264e207f6f110f027a4f13a21 SHA512 35d1b4b2cb1750173b42ad92f072de75f7151560abb4100b4acddb69f3027667fc8a66b3bc45fd1f443ad3f0bd7699684402ace60d4db034056d15fc01db9fc3
3+
EBUILD aha-0.5.1-r1.ebuild 482 BLAKE2B 69283b20e8b28c9b0816c1d3c0e23b34e28904e9c613e63de4db7325bebf5f28102ebb1b5edb3e06cb20d47edcf595738c80fa77921f0829c551db050b80ab16 SHA512 685bcdc840d455bbfed91c4aa1d808152f072ac5c00e5d690fbffaecb8110b8a87aa93fc015fb8a2721daec2b70a8eab744a1650bbf1137edd2501f1814788a4
34
MISC metadata.xml 679 BLAKE2B 1e3f5288af1d2a30f9ad157f676c196642113faf28fe97db1de68d8d62ede2cf45b76b8f17aa33b52b3c3015f131f6063a107c9dab75108278f1d055c247c521 SHA512 dfdba86f3c0cc684ed4a74e0ebe715aa295b5f8acae000e86609ceddbe3ee3e87b8c5640b0c955a60e389eef8201d64a5799ddbf061cf47c5423030fba458b9a
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33

44
EAPI=8
55

6-
DESCRIPTION="Converts ANSI escape sequences of a unix terminal to HTML code."
6+
DESCRIPTION="Converts ANSI escape sequences of a unix terminal to HTML code"
77
HOMEPAGE="https://github.com/theZiz/aha"
8-
SRC_URI="https://github.com/theZiz/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
8+
SRC_URI="https://github.com/theZiz/aha/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
99

1010
LICENSE="LGPL-2+ MPL-1.1"
1111
SLOT="0"
1212
KEYWORDS="~amd64"
1313

14-
DEPEND=""
15-
RDEPEND="${DEPEND}"
16-
BDEPEND=""
14+
PATCHES=(
15+
"${FILESDIR}/${P}-null-ptr-dereference-fix.patch"
16+
)
1717

1818
src_install() {
1919
emake PREFIX="${D}/usr" install
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
diff --git a/aha.c b/aha.c
2+
index 46e43c0..2bfebb7 100644
3+
--- a/aha.c
4+
+++ b/aha.c
5+
@@ -138,6 +138,15 @@ pelem parseInsert(char* s)
6+
return firstelem;
7+
}
8+
9+
+int parseDepthAtLeast(pelem elem, unsigned int wanted) {
10+
+ while (elem != NULL) {
11+
+ if (wanted == 0) return 1;
12+
+ elem = elem->next;
13+
+ --wanted;
14+
+ }
15+
+ return 0;
16+
+}
17+
+
18+
void deleteParse(pelem elem)
19+
{
20+
while (elem!=NULL)
21+
@@ -831,27 +840,20 @@ int main(int argc,char* args[])
22+
}
23+
else
24+
if (momelem->value == 38 &&
25+
- momelem->next &&
26+
- momelem->next->value == 2 &&
27+
- momelem->next->next)// 38;2;<n> -> 24 Bit
28+
+ parseDepthAtLeast(momelem, 4) &&
29+
+ momelem->next->value == 2)// 38;2;<r>;<g>;<b> -> 24 Bit
30+
{
31+
- momelem = momelem->next->next;
32+
- pelem r,g,b;
33+
- r = momelem;
34+
- momelem = momelem->next;
35+
- g = momelem;
36+
- if ( momelem )
37+
- momelem = momelem->next;
38+
- b = momelem;
39+
- if ( r && g && b )
40+
- {
41+
- state.highlighted = 0;
42+
- state.fc_colormode = MODE_24BIT;
43+
- *dest =
44+
- (r->value & 255) * 65536 +
45+
- (g->value & 255) * 256 +
46+
- (b->value & 255);
47+
- }
48+
+ pelem r = momelem->next->next;
49+
+ pelem g = r->next;
50+
+ pelem b = g->next;
51+
+ momelem = b;
52+
+
53+
+ state.highlighted = 0;
54+
+ state.fc_colormode = MODE_24BIT;
55+
+ *dest =
56+
+ (r->value & 255) * 65536 +
57+
+ (g->value & 255) * 256 +
58+
+ (b->value & 255);
59+
}
60+
else
61+
{
62+
@@ -899,27 +901,20 @@ int main(int argc,char* args[])
63+
}
64+
else
65+
if (momelem->value == 48 &&
66+
- momelem->next &&
67+
- momelem->next->value == 2 &&
68+
- momelem->next->next)// 48;2;<n> -> 24 Bit
69+
+ parseDepthAtLeast(momelem, 4) &&
70+
+ momelem->next->value == 2)// 48;2;<r>;<g>;<b> -> 24 Bit
71+
{
72+
- momelem = momelem->next->next;
73+
- pelem r,g,b;
74+
- r = momelem;
75+
- momelem = momelem->next;
76+
- g = momelem;
77+
- if ( momelem )
78+
- momelem = momelem->next;
79+
- b = momelem;
80+
- if ( r && g && b )
81+
- {
82+
- state.bc_colormode = MODE_24BIT;
83+
- state.highlighted = 0;
84+
- *dest =
85+
- (r->value & 255) * 65536 +
86+
- (g->value & 255) * 256 +
87+
- (b->value & 255);
88+
- }
89+
+ pelem r = momelem->next->next;
90+
+ pelem g = r->next;
91+
+ pelem b = g->next;
92+
+ momelem = b;
93+
+
94+
+ state.bc_colormode = MODE_24BIT;
95+
+ state.highlighted = 0;
96+
+ *dest =
97+
+ (r->value & 255) * 65536 +
98+
+ (g->value & 255) * 256 +
99+
+ (b->value & 255);
100+
}
101+
else
102+
{
103+
--
104+
2.35.1
105+

0 commit comments

Comments
 (0)