S3 clients report "invalid UTF-8" or XML parsing failures due to unsupported URL encoding
Summary: Affected Product: PowerScale OneFS (Releases prior to 9.13) S3 client applications operating against a PowerScale OneFS cluster reports "invalid UTF-8" or XML parsing exceptions when performing `ListObjects` or `ListObjectsV2` (GET Bucket) requests. This issue affects environments where standard ASCII filenames contain special characters, most notably the percent sign (`%`). ...
Symptoms
Affected Product: PowerScale OneFS (Releases prior to 9.13)
S3 client applications operating against a PowerScale OneFS cluster reports "invalid UTF-8" or XML parsing exceptions when performing `ListObjects` or `ListObjectsV2` (GET Bucket) requests. This issue affects environments where standard ASCII filenames contain special characters, most notably the percent sign (`%`).
Cause
The cause is a URL-decoding failure acting as a UTF-8 error.
When an S3 client application requests `encoding-type=url`, it expects all object keys in the returned XML payload to be URL-encoded (for example, the `%` character should be escaped to `%25`). However, OneFS does not support the `encoding-type=url` parameter for `GET Bucket (List Objects)` requests, and silently ignores it.
Because the parameter is ignored, OneFS returns the raw filename (ex:`fred%jim`) in the XML response. The client's XML parser attempts to URL-decode the string, misinterprets the characters immediately following the raw `%` symbol as a hexadecimal byte value, and crashes. This crash alerts to
Resolution
Tracked and resolved under PSCALE-8898 (issue 264794)
To permanently resolve this issue:
- Upgrade: Upgrade the cluster to OneFS 9.13 or newer, where support for `encoding-type=url` has been natively implemented.
- Backport Request:** requested for (OneFS 9.7.1 and 9.10.1).
Workaround
- If an immediate patch cannot be applied, the files containing the `%` character must be renamed using an alternate protocol (SMB, NFS, or local CLI) to remove the special character, or the client application must be reconfigured to not request URL encoding.