stavekontrolden
The package downloads a LibreOffice extension (.oxt file) from the project's official domain, which is a standard archive format containing dictionaries and license texts; even though the host is not on a standard whitelist, the content is non-executable data used for spell-checking and poses minimal risk.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a LibreOffice extension (.oxt file) from the project's official domain, which is a standard archive format containing dictionaries and license texts; even though the host is not on a standard whitelist, the content is non-executable data used for spell-checking and poses minimal risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:27
source=("https://stavekontrolden.dk/dictionaries/da_DK/da_DK-$pkgver.oxt")
PKGBUILD
1 offending line(s) highlighted# Maintainer: Frederik “Freso” S. Olesen <archlinux@freso.dk>
# Contributor: Frederik Nordahl Jul Sabroe <frederikns at gmail dot com>
# Contributor: adament <adament@adament.net>
# Contributor: Jamie Magee <jamie dot magee at gmail dot com>
pkgname=stavekontrolden
pkgver=2.9.159
pkgrel=1
pkgdesc='Danish dictionaries; for use with multiple programs'
arch=('any')
url='https://stavekontrolden.dk/'
license=('GPL-3.0-only AND (GPL-2.0-only AND LGPL-2.1-only AND MPL-1.1)')
optdepends=(
'hunspell: the spell checking libraries and apps'
'hyphen: for use of hyphenation rules'
'libmythes: for use of thesaurus dictionary')
makedepends=(
'libarchive'
'coreutils'
'findutils')
provides=(
'libreoffice-extension-da_dk'
'openoffice-extension-da_dk'
'hunspell-da'
'hyphen-da'
'mythes-da')
conflicts=("${provides[@]}")
source=("https://stavekontrolden.dk/dictionaries/da_DK/da_DK-$pkgver.oxt")
b2sums=('8c3c83ae8eaebcae8250932c86361b42105a91a3c2170aaf9849f640d84c191f925db691bf39373fb316c1205ac8bdfca1f695f914fe41dbc2f3442bae786643')
package() {
# LibreOffice extension
_extension_dir="${pkgdir}"/usr/lib/libreoffice/share/extensions/da_DK
install -dm755 "${_extension_dir}"
bsdtar -xf da_DK-$pkgver.oxt -C "${_extension_dir}"/
# Symlink for OpenOffice
install -dm755 "${pkgdir}"/opt/openoffice4/share/extensions
ln -s /usr/lib/libreoffice/share/extensions/da_DK "${pkgdir}"/opt/openoffice4/share/extensions/da_DK
# set types and make directories
_types=('hunspell' 'hyphen' 'mythes')
for type in "${_types[@]}"; do
install -dm755 "${pkgdir}"/usr/share/"$type"
done
_link_dir=../../lib/libreoffice/share/extensions/da_DK
# hunspell
ln -s $_link_dir/da_DK.dic "${pkgdir}"/usr/share/hunspell/da_DK.dic
ln -s $_link_dir/da_DK.aff "${pkgdir}"/usr/share/hunspell/da_DK.aff
# hyphen
ln -s $_link_dir/hyph_da_DK.dic "${pkgdir}"/usr/share/hyphen/hyph_da_DK.dic
ln -s $_link_dir/hyph_da_DK.dic "${pkgdir}"/usr/share/hyphen/hyph_da.dic
# thesaurus (mythes)
ln -s $_link_dir/th_da_DK.dat "${pkgdir}"/usr/share/mythes/th_da_DK.dat
ln -s $_link_dir/th_da_DK.idx "${pkgdir}"/usr/share/mythes/th_da_DK.idx
# myspell/dicts symlinks
install -dm755 "${pkgdir}"/usr/share/myspell/dicts
pushd "$pkgdir"/usr/share/myspell/dicts > /dev/null
for type in "${_types[@]}"; do
for file in "${pkgdir}"/usr/share/"$type"/*; do
ln -Ls ../../"$type"/"$(basename "$file")" .
done
done
popd > /dev/null
install -dm755 "${pkgdir}"/usr/share/doc/$pkgname
ln -s ../$_link_dir/README_da_DK.txt "${pkgdir}"/usr/share/doc/$pkgname/README_da_DK.txt
ln -s ../$_link_dir/HYPH_da_DK_README.txt "${pkgdir}"/usr/share/doc/$pkgname/HYPH_da_DK_README.txt
install -dm755 "${pkgdir}"/usr/share/licenses/$pkgname
ln -s ../$_link_dir/README_da_DK.txt "${pkgdir}"/usr/share/licenses/$pkgname/README_da_DK.txt
ln -s ../$_link_dir/HYPH_da_DK_README.txt "${pkgdir}"/usr/share/licenses/$pkgname/HYPH_da_DK_README.txt
# Remove world writable bits
chmod --recursive go-w "${pkgdir}"
# Remove executable bits
find "${pkgdir}"/ -type f -exec chmod -x {} +
}
Changes since previous scan
--- PKGBUILD @ 2026-10-30 00:29+++ PKGBUILD @ 2026-11-01 00:21@@ -3,7 +3,7 @@ # Contributor: adament <adament@adament.net> # Contributor: Jamie Magee <jamie dot magee at gmail dot com> pkgname=stavekontrolden-pkgver=2.9.157+pkgver=2.9.159 pkgrel=1 pkgdesc='Danish dictionaries; for use with multiple programs' arch=('any')@@ -25,7 +25,7 @@ 'mythes-da') conflicts=("${provides[@]}") source=("https://stavekontrolden.dk/dictionaries/da_DK/da_DK-$pkgver.oxt")-b2sums=('9d361ce9653c2cdf3e045599b58b86aea5bdeae81f80c822a43620554bad648e0306f53ab64b316f40d0fff0232f8851e1b5824f17806693a4d44088b9602c41')+b2sums=('8c3c83ae8eaebcae8250932c86361b42105a91a3c2170aaf9849f640d84c191f925db691bf39373fb316c1205ac8bdfca1f695f914fe41dbc2f3442bae786643') package() { # LibreOffice extensionScan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 15:56:05 | Medium | 1 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 15:50:30 | Medium | 1 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 15:45:54 | Medium | 1 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 13:35:05 | Medium | 1 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 13:28:00 | Medium | 1 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 13:22:09 | Medium | 1 |