trackmania-forever

LOW
maintainer Pietagorh 0 votes scanned 2026-09-27 19:20:45.373954
View on AUR
Why flagged

Downloads official TrackMania Forever game installers from Ubisoft/Nadeo CDN and official domain with verified SHA256 checksums; runs them through innoextract/cabextract (not executed directly); the non-whitelisted hosts are plausibly the project's own official distribution infrastructure, and all sources have matching checksums.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Low AI review downgraded a static finding llm_review

The static rules flagged this MEDIUM, but an AI model (anthropic/claude-sonnet-4.6) reviewed the full PKGBUILD and judged it LOW (confidence 80%): Downloads official TrackMania Forever game installers from Ubisoft/Nadeo CDN and official domain with verified SHA256 checksums; runs them through innoextract/cabextract (not executed directly); the non-whitelisted hosts are plausibly the project's own official distribution infrastructure, and all sources have matching checksums.

1 higher static finding superseded - not the current verdict (shown for transparency)
Medium source=() URL on a non-standard host source_untrusted_domain

One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).

  • PKGBUILD:21 tmnf_setup.exe::'https://nadeo-download.cdn.ubi.com/trackmaniaforever/tmnationsforever_setup.exe'
  • PKGBUILD:22 tmuf_setup.exe::'http://files.trackmaniaforever.com/tmunitedforever_setup.exe'

PKGBUILD

2 offending line(s) highlighted
1# Maintainer: pietagorh <pietagorhh at proton dot me>
2
3pkgname=trackmania-forever
4_pkgname=TmForever
5pkgver=2.11.26
6pkgrel=1
7pkgdesc="Retro arcade racing game, standalone edition (United + Nations)"
8url="https://www.trackmaniaforever.com/"
9license=('custom:commercial')
10arch=('x86_64')
11depends=(
12 xdg-user-dirs # get Documents dir
13 wine
14)
15makedepends=(
16 innoextract # extract game files from setup.exe
17 cabextract # extract DirectX dll's
18 icoutils # extract icons
19)
20source=(
21 tmnf_setup.exe::'https://nadeo-download.cdn.ubi.com/trackmaniaforever/tmnationsforever_setup.exe'
22 tmuf_setup.exe::'http://files.trackmaniaforever.com/tmunitedforever_setup.exe'
23 'launch-script.sh'
24 'nations.desktop'
25 'united.desktop'
26 'mimetypes.xml'
27 'EULA'
28 'EULA-fr'
29 'EULA-uk'
30 'EULA-us'
31)
32sha256sums=(
33 '2f659138ed4409da404970841e18f03d29921beaf6a424824c8312ddb20f6355'
34 'f8a4d09c64d65be271c0346f5b0e41529cb25eb8c605d4602d0f34f27fb1355f'
35 '0a7833a45d51b13d6c47312f918819535305bcc5bb66e875a8f4273a76259b48'
36 '47907d248a8f0252f24c7946e4f700513c5bbc0b1a093935ec226cdb82894a8a'
37 '66d70d439739f5a954840e0be53662f16dfb66169fca6aad356759b18a9acdcd'
38 '3d056047d0f2d17e65a755c7739fe56aed708904129e2214f602af26e966945e'
39 '260266e9e03a08bebc440c79acff0a1619c3ded313a61fc2c17f6d86e2a580ac'
40 '894e97e1d6ea9bd1112a12a4c3afa6dee2b08a8565fbd19411976cb28be18e29'
41 'cdb8147f2c21155e46c4fef638562ca364a6fa01c7f78e6569946accf2c1fc33'
42 'f15c9abc0dd006afde1c649b976914bdab3abceb7a299556ef4ee2b86b5c9bda'
43)
44backup=("opt/${_pkgname}/Nadeo.United.ini" "opt/${_pkgname}/Nadeo.Nations.ini")
45
46prepare() {
47 echo -e " \e[1;35m->\e[1;37m Extracting game files (Nations) \e[0m"
48 innoextract 'TmNationsForever_Setup_Tmp.exe'
49
50 rm -rf 'app/GameData/MenuForever.Green'
51 mv 'app/GameData/MenuForever' 'app/GameData/MenuForever.Green'
52 mv 'app/Nadeo.ini' 'Nadeo.Nations.ini'
53 mv 'app/Tm'{,Nations}'ForeverLauncher.exe'
54
55 echo -e " \e[1;35m->\e[1;37m Extracting icons (Nations) \e[0m"
56 wrestool --extract 'app/TmForever.exe' --type=14 --output='nations.ico'
57 icotool --extract 'nations.ico'
58
59 echo -e " \e[1;35m->\e[1;37m Extracting game files (United) \e[0m"
60 innoextract 'TmUnitedForever_Setup_Tmp.exe' \
61 --exclude-temp # already extracted from nations
62
63 rm -rf 'app/GameData/MenuForever.Blue'
64 mv 'app/Nadeo.ini' 'Nadeo.ini.in'
65
66 echo -e " \e[1;35m->\e[1;37m Extracting icons (United) \e[0m"
67 wrestool --extract 'app/TmForever.exe' --type=14 --output='united.ico'
68 icotool --extract 'united.ico'
69 icotool --extract 'app/Gbx.ico'
70
71 echo -e " \e[1;35m->\e[1;37m Extracting libraries \e[0m"
72 cabextract 'tmp/DxRedist/Apr2006_d3dx9_30_x86.cab' --filter 'd3dx9_30.dll'
73}
74
75build() {
76 sed '/^UserSubDir/d' 'Nadeo.ini.in' > 'Nadeo.ini'
77 return 0
78}
79
80package() {
81 local _destdir
82
83 # Game dir
84 _destdir="${pkgdir}/opt/${_pkgname}"
85 install -dm755 "${_destdir}"
86 cp -ar 'app'/* "${_destdir}"
87 find "${_destdir}" -type d -exec chmod 755 "{}" \;
88 find "${_destdir}" -type f -exec chmod 644 "{}" \;
89 install -Dm644 'd3dx9_30.dll' "${_destdir}"
90
91 # Config files
92 install -Dm644 'Nadeo'*'.ini' "${_destdir}"
93
94 # Launch script
95 _destdir="${pkgdir}/usr/bin"
96 install -d -m755 "${_destdir}"
97 install -Dm755 'launch-script.sh' "${_destdir}/${pkgname}"
98
99 # Desktop entries
100 _destdir="${pkgdir}/usr/share/applications/"
101 install -d -m755 "${_destdir}"
102 install -Dm644 'united.desktop' "${_destdir}/${pkgname}-united.desktop"
103 install -Dm644 'nations.desktop' "${_destdir}/${pkgname}-nations.desktop"
104
105 # Mime association
106 _destdir="${pkgdir}/usr/share/mime/packages"
107 install -Dm644 'mimetypes.xml' "${_destdir}/${pkgname}.xml"
108
109 # Icon
110 for _size in 16 32 48 96 256; do
111 _destdir="${pkgdir}/usr/share/icons/hicolor/${_size}x${_size}"
112 install -d -m755 "${_destdir}/"{apps,mimetypes}
113 for _game in nations united; do
114 install -Dm644 "${_game}_"*"_${_size}x${_size}x32.png" \
115 "${_destdir}/apps/trackmania-forever-${_game}.png"
116 done
117 install -Dm644 'Gbx_'*"_${_size}x${_size}x32.png" \
118 "${_destdir}/mimetypes/trackmania-forever-gbx.png"
119 done
120
121 # EULAs
122 _destdir="${pkgdir}/usr/share/licenses/${pkgname}"
123 install -d -m755 "${_destdir}"
124 install -Dm644 "EULA" "${_destdir}"
125 for _country in fr uk us; do
126 install -Dm644 "EULA-${_country}" "${_destdir}"
127 done
128
129 # Manual
130 _destdir="${pkgdir}/usr/share/doc/${pkgname}"
131 install -d -m755 "${_destdir}"
132 install -Dm644 'app/Manual/'* "${_destdir}"
133}
134

Scan history

Scanned at (UTC)SeverityRules
2026-09-27 19:20:45 Low 3
2026-09-27 19:19:18 Medium 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion