This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch] Avoid duplicate names in /proc/registry (which may crash find)


Hi Corinna,

Corinna Vinschen wrote:
...
With the attached patch, a duplicate name "foo" is handled as follows:

- readdir() returns the key as "foo" and the value as "foo%val".
- If the name is "foo%val", stat() and open() consider only the value "foo".


This keeps the names 'as is' if possible and allows access to the (very few) entries with duplicate names. The "%val" is at least somewhat self-explanatory.

Cool. Can you please send a ChangeLog entry as well?



Of course:


2008-12-07 Christian Franke <franke@computer.org>

	* fhandler_registry.cc (encode_regname): Add Parameter add_val.
	Append "%val" if add_val is set.
	(decode_regname): Remove trailing "%val". Change returncode
	accordingly.
	(__DIR_hash): New class.
	(d_hash): New macro.
	(key_exists): New function.
	(fhandler_registry::exists): Remove encode of registry name
	before path compare, decode file part of path instead.
	Skip checks for keys if trailing "%val" detected.
	(fhandler_registry::fstat): Change check of return
	value of decode_regname ().
	(fhandler_registry::readdir): Allocate __DIR_hash.
	Record key names in hash table. Append "%val" if key with
	same name exists. Fix error handling of encode_regname ().
	Set dirent.d_type.
	(fhandler_registry::closedir): Delete __DIR_hash.
	(fhandler_registry::open): Don't open key if trailing "%val"
	detected by decode_regname ().
	(open_key): Ditto.



Christian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]