quoted_printable_encode() produces lines longer than 76 characters for bytes 0xF5 to 0xFF
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia con php_quot_print_encode() in ext/standard/quot_print.c e confronta la gestione degli a capo morbidi per i byte da 0xF5 a 0xFF con i rami esistenti. Controlla i test quoted-printable pertinenti e aggiungi la copertura per una sequenza di questi byte. Il lavoro è completato quando le righe codificate rispettano il limite di 76 caratteri della RFC 2045; l’issue segnala che il filtro di flusso non è interessato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
quoted_printable_encode() is documented to follow RFC 2045 section 6.7, which limits encoded lines to 76 characters. Input bytes in the range 0xF5 to 0xFF are encoded as =XX but never trigger a soft line break, so a run of them ends up on a single line of any length.
The following code:
<?php
$encoded = quoted_printable_encode(str_repeat("\xFF", 30));
var_dump(array_map('strlen', explode("\r\n", $encoded)));
Resulted in this output:
array(1) {
[0]=>
int(90)
}
But I expected this output instead:
array(2) {
[0]=>
int(76)
[1]=>
int(15)
}
The same happens with any binary data that contains such bytes, for example a random string of a few hundred bytes regularly produces 78 or 79 character lines. The convert.quoted-printable-encode stream filter is not affected.
Root cause: in php_quot_print_encode() (ext/standard/quot_print.c) the soft break condition has one branch for bytes up to 0x7F and three branches for UTF-8 lead and continuation bytes (0x80 to 0xDF, 0xE0 to 0xEF, 0xF0 to 0xF4). Bytes 0xF5 to 0xFF match none of them, so the line position keeps growing without a break being inserted.
PHP Version
PHP 8.7.0-dev (master at b7256eee), also present in all supported branches
Operating System
Any
- Lingua principale
- C
- Stelle
- 40.4k
- Fork
- 8.2k
- Merge medio
- 3g 3h
- PR unite (30g)
- 173
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di php/php-src
-
Bug Status: Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
standard/syslog: the request shutdown hook calls closelog() even when the request never opened syslogForse già presa @lazerg l’ha presa 7 giorni fa. ApertaBug Extension: standard Status: Verified
Difficoltà 2/5 Mezza giornata Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Bug Status: Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
php/php-src#24196 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Feature Status: Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
php/php-src#24183 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Sockets from synchronous stream_socket_client() are left in non-blocking mode on WindowsForse già presa Una pull request collegata a questa issue è aperta o già unita. ApertaBug Status: Needs Triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
[WinReg] update to v12.0.0Apertacategory:port-update
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 2 giorni
-
type-bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
feat(palindrome): add C solutionForse già presa @aadiitya2007 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
techcsispit/code-corner#58 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[LOGO] Add Ruxt Linux LogoApertalogo request
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
fastfetch-cli/fastfetch#2661 ·
I maintainer di solito rispondono entro 1 giorno
-
Mark ignored Mac OS partitions RecoveryOSContainer and iBootSystemContainerForse già presa @meven l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
storaged-project/udisks#1559 ·