View Issue Details

IDProjectCategoryView StatusLast Update
0011873Talermerchant backendpublic2026-10-14 16:33
Reportervecirex Assigned To 
PriorityhighSeveritymajorReproducibilityhave not tried
Status newResolutionopen 
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

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2026-10-14 16:22 vecirex New Issue
2026-10-14 16:22 vecirex Status new => assigned
2026-10-14 16:22 vecirex Assigned To => Florian Dold
2026-10-14 16:22 vecirex Priority normal => high
2026-10-14 16:22 vecirex Tag Attached: mytops
2026-10-14 16:22 vecirex Tag Attached: quality
2026-10-14 16:25 vecirex Assigned To Florian Dold => vecirex
2026-10-14 16:33 vecirex Status assigned => new
2026-10-14 16:33 vecirex Assigned To vecirex =>