[Patch] Encode invalid chars in /proc/registry entries
Fri Nov 16 19:25:00 GMT 2007
Corinna Vinschen wrote:
>> Patch is tested with 1.5.24-2. Merge with HEAD looks good, but was not
>> actually tested. Therefore, no changelog provided yet.
> Thanks for this patch. Apart from the missing ChangeLog I'm inclined
> to apply it to the upcoming 1.5.25 release, but I don't like to have it
> in HEAD as is.
Thanks, I would appreciate to have this issue fixed in the bugfix release.
Here is a new version of the patch and a ChangeLog.
The names "." and ".." are now also encoded. Theses are also valid as
Key/Value Names and ".." may result in infinite recursion.
> The reason is that the patch introduces more usages of CYG_MAX_PATH plus
> static buffers of that size. That's ok for 1.5, but that's not ok
> anymore for 1.7. We're heading to support PATH_MAX = ~32K paths. The
> registry also supports long paths, unfortunately with undefined max
> length. The current definition in MSDN(*) is
> Max name length of keys: 255 chars
> Max name length of values: 16383 chars
> Max tree depth: 512 levels
> So, for HEAD I'd like to ask you to allow arbitrary path lengths in your
> code. Personally I could live with restricting registry paths to
> PATH_MAX as well.
Agree. Probably Cygwin should never descend paths that exceed PATH_MAX,
as an application using PATH_MAX may have no buffer overflow check.
> While you're digging in registry code anyway... would you be interested
> to convert the entire registry code to wide char and long path names?
> I'd be glad for any help.
I will have a look at it, but be patient. Is current HEAD a reasonable
starting point or is there a better (more stable) snapshot?
2007-11-16 Christian Franke <firstname.lastname@example.org>
* fhandler_registry.cc (must_encode): New function.
(fhandler_registry::exists): Encode name before path compare.
(fhandler_registry::fstat): Pass decoded name to win32 registry call.
(fhandler_registry::readdir): Return encoded name to user.
(fhandler_registry::open): Store decoded name into value_name.
(open_key): Pass decoded name to win32 registry call.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 4168 bytes
Desc: not available
More information about the Cygwin-patches