[PATCH 2/4] regedit: Simplify parseKeyName()

Alexandre Julliard julliard at winehq.org
Tue Apr 25 03:51:36 CDT 2017


Hugh McMaster <hugh.mcmaster at outlook.com> writes:

> Yes, sorry about that. I'll send an updated patch.
>
> It seems to me that it would be better to check for a backslash or null-terminator at the valid string length, 
> instead of calculating the input key length. Something like the following:
>
>     for (i = 0; i < num_class_keys; i++)
>     {
>         int len = lstrlenW(reg_class_namesW[i]);
>         WCHAR wc = lpKeyName[len];
>         if (!strncmp(lpKeyName, reg_class_namesW[i], len) && (wc == 0 || wc == '\\'))
>         {
>             *hKey = reg_class_keys[i];
>             break;
>         }
>     }
>
> Is this preferable? Or do you want to use pointer arithmetic?

You can do it that way, but you can't access lpKeyName[len] before the
strncmp since you don't know if the string is long enough.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list