BUG: case insensitive keyword selection returns a shifted range when lowercasing expands a character
Les mainteneurs répondent en général sous 2 jours
@ManoharPaturi y travaille déjà.
Depuis le 27/10/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
Piste de recherche
Trouve KeywordSelectionStrategy.select_range, mentionné dans l’issue, et examine comment cette méthode fait correspondre une recherche insensible à la casse au texte d’origine. Reproduis le cas avec keyword="secret" et text="İsecret" ; le travail est terminé si la plage renvoyée découpe le mot-clé entier dans le texte d’origine malgré l’expansion lors de la conversion en minuscules. Le payload ne nomme aucun fichier de test ; trouve ou ajoute donc une couverture pour cette reproduction.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
KeywordSelectionStrategy.select_range locates the keyword with text.lower().find(keyword.lower()) in case insensitive mode and then applies that index to the original, unlowered text. str.lower() is not length preserving for every character: a dotted capital I (İ, U+0130) lowercases to two code points, so every such character before the match shifts the returned range.
With keyword="secret" and case_sensitive=False on the text İsecret, the strategy returns the range (2, 7), which slices to ecret: the leading s of the keyword is left out. A SelectiveTextConverter built on this strategy then converts the wrong characters and the actual secret stays in the clear.
Expected Behavior
The selected range must slice to the keyword (plus any requested context) on the original text, whatever lowercase expansion occurs earlier in the string.
Reproduction Steps
- Build
KeywordSelectionStrategy(keyword="secret", case_sensitive=False). - Call
select_range(text="İsecret"). - The returned range slices to
ecreton main.
Minimal Reproduction
strategy = KeywordSelectionStrategy(keyword="secret", case_sensitive=False)
start, end = strategy.select_range(text="İsecret")
"İsecret"[start:end] # "ecret" on main
Environment
PyRIT main. Python 3.11.
- Langage dominant
- Python
- Étoiles
- 4.7k
- Forks
- 980
- Merge moyen
- 2 j 7 h
- PR mergées (30 j)
- 446
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
- Aucun 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 microsoft/PyRIT
-
BUG: Garak and ML-VLSU loaders still load one example when max_examples is 0 or negativePeut-être pris @ShivamSharma43 l’a pris il y a 2 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: ComicJailbreak max_examples counts goals that render nothing, so templates=["code"] with max_examples=10 failsPeut-être pris @ShivamSharma43 l’a pris il y a 2 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 2 jours
-
BUG: SeedDatasetFilter matches harm_categories, modalities and size case-sensitively, unlike tagsPeut-être pris @ShivamSharma43 l’a pris il y a 2 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 2 jours
-
Conversation drawer shows the previous attack's conversations after switching attacksPeut-être pris @ManoharPaturi l’a pris il y a 2 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
microsoft/PyRIT#3575 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
Conversation draft turns permanently dirty when applied conversions match no piecePeut-être pris @ManoharPaturi l’a pris il y a 2 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
microsoft/PyRIT#3573 · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
Skill submission: negative-test-first (testing discipline; PR creation is collaborator-only)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ComposioHQ/awesome-claude-skills#2398 ·
Les mainteneurs répondent en général sous 2 jours
-
bug converter
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
grafana/sigma-rule-deployment#435 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
datamodel-code-generator/datamodel-code-generator#5589 ·
Les mainteneurs répondent en général sous 1 jour
-
Shell: serve the home app's Cookie Policy on a hard reloadPeut-être pris @2001anshkaushik l’a pris aujourd’hui. Ouvertefeature module:ai
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
rocketride-org/rocketride-server#2899 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
GEFSv12
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100