_socket: `socket.sethostname()` reports a failed buffer export as an OS error, raising `SystemError`
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 25/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- python
- Domaine
- networking
Piste de recherche
Start by running the reproducer, which calls socket.sethostname() with a bytes subclass whose buffer raises KeyError, and note the SystemError it produces. The body links PR gh-161684, so check that PR before starting, since the work may already be under way. Done means the original exception propagates to the caller instead of being reported as a SystemError, and a test covers that case.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug report
Summary
socket.sethostname() accepts a bytes subclass, and if getting a buffer from that object fails, the error is not reported. Instead SystemError is returned to caller.
SystemError: <class 'OSError'> returned a result with an exception set
Reproducer
import os
import socket
class B(bytes):
def __buffer__(self, flags):
raise KeyError("boom")
try:
os.stat("/nonexistent")
except OSError:
pass
socket.sethostname(B(b"h"))
Traceback (most recent call last):
File "min.py", line 23, in <module>
socket.sethostname(B(b"h"))
~~~~~~~~~~~~~~~~~~^^^^^^^^^
SystemError: <class 'OSError'> returned a result with an exception set
CPython versions tested on:
3.15
Operating systems tested on:
Linux
Linked PRs
- gh-161684
- Langage dominant
- Python
- Étoiles
- 78.2k
- Forks
- 36.6k
- Merge moyen
- 19 h 57 min
- PR mergées (30 j)
- 630
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
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.
Autres issues de python/cpython
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
stdlib type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
extension-modules stdlib topic-XML type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
python/cpython#161807 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
stdlib type-feature
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
python/cpython#161788 · 7 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
extension-modules topic-IO type-bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de python/cpython
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
cpp-best-practices/project_validator#267 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Project-N-E-K-O/N.E.K.O#3725 ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug] Sending a Telegram message chain twice duplicates mentionsPeut-être pris @123XieC l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
AstrBotDevs/AstrBot#11125 ·
Les mainteneurs répondent en général sous 1 jour
-
backend bug priority: high
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
nooriegarg/ContribIQ#73 ·
Les mainteneurs répondent en général sous 1 jour
-
bug p3 security
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
amd/gaia#8197 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour