-Wstringop-truncation warning in socketmodule.c getsockaddrarg() for AF_ALG salg_name
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
Building 3.14.5 with gcc 15.2 produces this warning:
default: ./Modules/socketmodule.c: In function ‘getsockaddrarg’:
default: ./Modules/socketmodule.c:2636:9: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
default: 2636 | strncpy((char *)sa->salg_name, name, sizeof(sa->salg_name));
default: | ^
Build environment: Ubuntu 26.04 LTS, gcc 15.2.0, configure with
./configure --enable-optimizations --with-lto --enable-bolt --enable-safety --enable-slower-safety --with-system-expat CXX=/usr/bin/g++ CFLAGS="-flto=auto" LDFLAGS="-flto=auto"
This looks like a false positive. I see this location reported in https://github.com/python/cpython/issues/94536 and there is a fix for a similar warning here:
https://github.com/matthiasgoergens/cpython/commit/c1fdddcf0f7b31a5954163bfd299115b1fa7799b
Would the following be a good fix that mirrors that older one?
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstringop-truncation"
strncpy((char *)sa->salg_name, name, sizeof(sa->salg_name));
#pragma GCC diagnostic pop
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Linked PRs
- gh-150022
Guide de contribution
Ouvrir 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.
Piste de recherche
Commencez dans Modules/socketmodule.c, au niveau du traitement de AF_ALG par getsockaddrarg(), et examinez l’avertissement strncpy signalé. Consultez l’issue CPython correspondante et la PR liée gh-150022, puis vérifiez avec le build GCC indiqué que l’avertissement est résolu sans modifier le comportement du socket.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c
- Domaine
- networking
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 25/100