Skip to content

fix: tambah signature ekstensi RFM lama (mpeg, mpg, wma, flv, mpga, m4a, ac3, aiff, mid, iso, dmg) - #4

Merged
andifahruddinakas merged 1 commit into
masterfrom
fix/signature-ekstensi-rfm-lama
Oct 6, 2026
Merged

andifahruddinakas merged 1 commit into
masterfrom
fix/signature-ekstensi-rfm-lama

Conversation

@andifahruddinakas

Copy link
Copy Markdown
Member

Deskripsi

Terkait OpenSID/OpenSID#12025 (tidak bisa upload mp4 ke file manager). Di OpenSID, config/filemanager.php akan dikembalikan ke daftar ekstensi RFM lama (ext_file, ext_video, ext_music, ext_misc). Masalahnya, sebagian ekstensi itu belum punya signature di FileContentValidator::KNOWN_SIGNATURES. Akibatnya unggahannya selalu ditolak sebagai "unverifiable", walaupun ekstensinya sudah diizinkan.

Perubahan

  • FileContentValidator::KNOWN_SIGNATURES: tambah signature berikut.
Ekstensi Signature
mpeg, mpg 00 00 01 BA (MPEG-PS pack) / 00 00 01 B3 (sequence header)
wma GUID header ASF 30 26 B2 75 8E 66 CF 11
flv FLV
mpga sama dengan mp3 (ID3 / frame sync)
m4a ftyp di offset 4 (ISO-BMFF)
ac3 0B 77
aiff FORM + AIFF/AIFC di offset 8
mid MThd
iso CD001 (ISO 9660) / BEA01 (UDF) di offset 32769
dmg trailer UDIF koly di 512 byte terakhir
  • matchesKnownSignature(): sebelumnya hanya membaca 512 byte pertama. Sekarang setiap pasangan [offset, bytes] dibaca lewat fseek, sehingga offset jauh (iso) dan offset negatif dari akhir berkas (dmg) bisa dicek. File yang terlalu pendek untuk memuat signature tetap ditolak.
  • Pemindaian polyglot (<?php, <script, dll.) tetap berjalan untuk semua ekstensi baru.
  • Config bawaan paket tidak diubah. Ekstensi ini hanya aktif kalau host menambahkannya ke filemanager.extensions.

Test

  • Tambah 4 test di FileContentValidatorTest:
    • setiap format baru dengan signature valid diterima,
    • payload PHP yang menyamar sebagai format baru ditolak,
    • signature valid yang membawa payload PHP ditolak,
    • file yang terlalu pendek untuk signature iso/dmg ditolak.
  • vendor/bin/phpunit: 93 tests, 212 assertions, OK.
  • vendor/bin/pint --test: passed.
  • vendor/bin/phpstan analyse: No errors.

Checklist

  • Menjalankan test suite lengkap
  • Menjalankan Pint & PHPStan

@andifahruddinakas
andifahruddinakas force-pushed the fix/signature-ekstensi-rfm-lama branch from ddb414a to e64b4dc Compare October 6, 2026 04:58
@andifahruddinakas
andifahruddinakas merged commit a4dc099 into master Oct 6, 2026
7 checks passed
@andifahruddinakas
andifahruddinakas deleted the fix/signature-ekstensi-rfm-lama branch October 6, 2026 05:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant