View Issue Details

IDProjectCategoryView StatusLast Update
0011873Talermerchant backendpublic2026-10-29 20:18
Reportervecirex Assigned ToChristian Grothoff Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PriorityhighSeveritymajorReproducibilityhave not tried
Status informingResolutionreopened 
Product Versiongit (master) 
Target Version1.6Fixed in Version1.6 
Summary0011873: merchant: reject @ in merchant_base_url / instance id (breaks /pay ec=2008)
DescriptionRelated to 0011866 (Case 2).

Problem:
merchant_base_url in the contract embeds the instance id. If the instance
id contains '@' (e.g., kontakt@example.ch), the URL becomes
https://HOST/instances/kontakt@example.ch/ and fails TALER_url_valid_charset
on /pay re-parse (TALER_JSON_spec_web_url_copy). Wallet /pay then returns
HTTP 500 ec=2008 (pay-no-deposit). Journal:
WARNING ... Failed to parse proto contract at field merchant_base_url
ASSERT ... pay.c (contract parse)
HTTP 500  ec=2008


This is independent of bare merchant.website (0011848 / #11849). The website
field can be a valid https URL while merchant_base_url is still invalid.
taler_pay_uri also embeds the instance id, so the payment URI path is
affected as well.

Observed charset (exchange src/util/url.c): no '@'
(...9/:;&?-.,=_~%+#).

Desired:
- Reject instance ids / merchant_base_url values that contain characters
  outside TALER_url_valid_charset (at least '@') on instance create and
  PATCH.
- Prefer a clear client-facing error at write time instead of /pay 500.
- Optionally document allowed instance-id charset for operators.

cf. 0011866 (repro/test ticket for /pay 500 with invalid merchant URL)
cf. https://git.taler.net/taler/exchange/file/src/util/url.c.html
Tagsmytops, quality

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

vecirex

2026-10-29 10:40

administrator   ~0030169

Wrong ticket: only hotfix done, product fix pending; cf. 0011866

Christian Grothoff

2026-10-29 20:18

manager   ~0030171

latest merchant enforces ID constraints on schema, preventing this from happening. Note that DB migrations may FAIL hard if bad identifiers are still anywhere in the DB.

Issue History

Date ModifiedUsernameFieldChange
2026-10-14 14:22vecirexNew Issue
2026-10-14 14:22vecirexStatusnew => assigned
2026-10-14 14:22vecirexAssigned To => Florian Dold
2026-10-14 14:22vecirexPrioritynormal => high
2026-10-14 14:22vecirexTag Attached: mytops
2026-10-14 14:22vecirexTag Attached: quality
2026-10-14 14:25vecirexAssigned ToFlorian Dold => vecirex
2026-10-14 14:33vecirexStatusassigned => new
2026-10-14 14:33vecirexAssigned Tovecirex =>
2026-10-14 16:50Christian GrothoffAssigned To => Christian Grothoff
2026-10-14 16:50Christian GrothoffStatusnew => assigned
2026-10-29 10:38vecirexStatusassigned => closed
2026-10-29 10:38vecirexResolutionopen => fixed
2026-10-29 10:38vecirexStatusclosed => assigned
2026-10-29 10:38vecirexResolutionfixed => reopened
2026-10-29 10:40vecirexNote Added: 0030169
2026-10-29 20:18Christian GrothoffStatusassigned => informing
2026-10-29 20:18Christian GrothoffFixed in Version => 1.6
2026-10-29 20:18Christian GrothoffNote Added: 0030171
2026-10-29 20:18Christian GrothoffProduct Version => git (master)
2026-10-29 20:18Christian GrothoffTarget Version => 1.6
2026-10-29 20:18Christian GrothoffDescription Updated