Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

quoted_printable_encode() produces lines longer than 76 characters for bytes 0xF5 to 0xFF

Ouverte Adaptée aux débutants
#24,441 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@auraseb y travaille déjà.

Depuis le 19/10/2026.

  • #24442 par @auraseb — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
76/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
c, php
Domaine
backend

Piste de recherche

Commencez par php_quot_print_encode() dans ext/standard/quot_print.c et comparez le traitement des retours à la ligne souples pour les octets de 0xF5 à 0xFF avec les branches existantes. Examinez les tests quoted-printable pertinents et ajoutez une couverture pour une séquence de ces octets. Le travail est terminé lorsque les lignes encodées respectent la limite de 76 caractères de la RFC 2045 ; l’issue indique que le filtre de flux n’est pas affecté.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
C
Étoiles
40.4k
Forks
8.2k
Merge moyen
2 j 22 h
PR mergées (30 j)
166

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de php/php-src

Toutes les issues de php/php-src

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.