Bug: release tooling should quote remote command arguments
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 61
- Forks
- 48
- Merge moyen
- 1 h 22 min
- PR mergées (30 j)
- 4
Description
run_release.py builds remote shell command strings for release publication.
Several values are interpolated directly into those command strings, including
release credential environment values, the release tag, and remote staging paths
derived from release-manager state.
Those values are normally trusted release-process inputs, but quoting them
consistently makes the generated commands safer and more predictable when a
value contains whitespace or shell metacharacters.
Reproducer
Using mocked Paramiko clients:
- Set the python.org API credential value to contain shell metacharacters, such
asuser:key; echo unexpected. - Make the fake Sigstore issuer return a token containing shell metacharacters,
such astoken; touch /tmp/unexpected. - Run the python.org upload step and capture the command sent to
exec_command(). - The captured command includes those values unquoted in
AUTH_INFO=...and
SIGSTORE_IDENTITY_TOKEN=...assignments.
Similar mocked tests can set the release-manager SSH username to a value with a
metacharacter and observe that derived staging paths are inserted into cleanup,
copy, unzip, move, group, and permission commands without quoting.
Expected behavior
Release-tool commands should quote environment values, release arguments, and
remote filesystem paths before sending command strings to the remote shell,
while preserving intentional glob expansion for staged artifact copies.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par run_release.py et examinez la construction des commandes pour l’envoi vers python.org et les chemins SSH de release-manager. Utilisez des clients Paramiko simulés pour capturer la sortie de exec_command() avec des métacaractères dans les identifiants, les jetons, les noms d’utilisateur et les chemins de staging ; c’est terminé lorsque ces valeurs sont correctement protégées par des guillemets, tandis que l’expansion intentionnelle des glob pour les copies d’artefacts préparés reste intacte.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- release
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 68/100