Project

Profile

Help

Issue #9207

Updated by pulpbot over 2 years ago

 

 **Ticket moved to GitHub**: "pulp/pulp_file/630":https://github.com/pulp/pulp_file/issues/630 




 ---- 


 There are no errors thrown when adding file content to a repository where the file name/relative path contains a comma. The PULP_MANIFEST is then updated to include a comma in the relative_path field thus breaking deserialization of the PULP_MANIFEST when referenced as the file remote target (URL) of an external pulp repository. 

 Example: 
 ~~~ text 
 All/bison-3.7.6,1.txz,6c7d3a44ef1f8dc77a1ff8b6df38c4a41b4b443e6ea433e662805a5e006268ec,489308 
 ~~~ 

 Commas are valid filename characters in both Linux and Windows filesystems. FreeBSD specifically uses a versioning schema that utilizes commas in the filenames of packages to denote [PORTEPOCH](https://docs.freebsd.org/en/books/porters-handbook/makefiles/#:~:text=5.2.3.2.-,PORTEPOCH,-From%20time%20to) 

 The fix should be either to serialize the fields using double quotes in accordance with [RFC4180](https://datatracker.ietf.org/doc/html/rfc4180#:~:text=6.%20%20Fields%20containing%20line%20breaks%20(CRLF)%2C%20double%20quotes%2C%20and%20commas%0A%20%20%20%20%20%20%20should%20be%20enclosed%20in%20double-quotes.%20%20For%20example%3A%0A%0A%20%20%20%20%20%20%20%22aaa%22%2C%22b%20CRLF%0A%20%20%20%20%20%20%20bb%22%2C%22ccc%22%20CRLF%0A%20%20%20%20%20%20%20zzz%2Cyyy%2Cxxx), URL encode commas in the field, or choose a different serialization format (e.g. YAML, JSON, XML, etc...). 

 I tested using URL encoding of the commas ```%2C``` which allowed the PULP_MANIFEST to successfully be validated and files to be synced but then prevented files from being downloaded from the sync'd repository due to how the file distribution serves file artifacts. 

Back