Projet

Général

Profil

Development #40275

crash sur % dans le fichier de config

Ajouté par Emmanuel Cazenave il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
28 février 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Si un % dans le mot de passe de la db par exemple, wcs-olap.ini se retrouve avec une ligne :

pg_dsn = dbname=bijoe password=rdf%ff

Et ça pête :

(publik-env-py3) cazino@cazino-laptop:~/src/combo$ wcs-olap /var/lib/bijoe/tenants/bijoe.dev.publik.love/wcs-olap.ini 
Traceback (most recent call last):
  File "/home/cazino/envs/publik-env-py3/bin/wcs-olap", line 11, in <module>
    load_entry_point('wcs-olap', 'console_scripts', 'wcs-olap')()
  File "/home/cazino/src/wcs-olap/wcs_olap/cmd.py", line 14, in main
    main2()
  File "/home/cazino/src/wcs-olap/wcs_olap/cmd.py", line 85, in main2
    defaults.update(config.items('wcs-olap'))
  File "/usr/lib/python3.7/configparser.py", line 857, in items
    return [(option, value_getter(option)) for option in d.keys()]
  File "/usr/lib/python3.7/configparser.py", line 857, in <listcomp>
    return [(option, value_getter(option)) for option in d.keys()]
  File "/usr/lib/python3.7/configparser.py", line 854, in <lambda>
    section, option, d[option], d)
  File "/usr/lib/python3.7/configparser.py", line 394, in before_get
    self._interpolate_some(parser, option, L, value, section, defaults, 1)
  File "/usr/lib/python3.7/configparser.py", line 444, in _interpolate_some
    "found: %r" % (rest,))
configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: '%ff'

Fichiers

Révisions associées

Révision 1dbee3c4 (diff)
Ajouté par Benjamin Dauvergne il y a environ 4 ans

misc: use quoting in pg_dsn (#40275)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Projet changé de OLAP / Business Intelligence pour Publik à BiJoe

Il faut produire %% ; c'est le boulot de bijoe.

#2

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Assigné à mis à Benjamin Dauvergne
#3

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

#4

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

C'est pas vraiment du code testé, donc à tester en dév à la main si possible.

#5

Mis à jour par Frédéric Péters il y a environ 4 ans

Je n'ai pas regardé les détails mais quid de plutôt à utiliser RawConfigParser, si on n'exploite pas les possibilités de substitution chaine.

#6

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

Frédéric Péters a écrit :

Je n'ai pas regardé les détails mais quid de plutôt à utiliser RawConfigParser, si on n'exploite pas les possibilités de substitution chaine.

Ce serait aussi une solution mais la construction est tout de même déficiente au moins sur le quoting des attributs du DSN postgresql (si on a un espace dans un mot de passe ou un quote ça va foirer).

#8

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

Voilà avec un vrai test, je suis passé à SafeConfigParser qui correspond au ConfigParser python3 dans wcs-olap.

#9

Mis à jour par Emmanuel Cazenave il y a environ 4 ans

  • Statut changé de Solution proposée à Solution validée
#10

Mis à jour par Benjamin Dauvergne il y a environ 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 1dbee3c4b3878d4ed5612a1153fb9b28a5058018
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Feb 28 18:55:56 2020 +0100

    misc: use quoting in pg_dsn (#40275)
#11

Mis à jour par Frédéric Péters il y a environ 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF