[PATCH] advapi32: Avoid calling strlen on constants

Alex Henrie alexhenrie24 at gmail.com
Tue Feb 5 00:12:04 CST 2019


Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
 dlls/advapi32/crypt.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c
index ab1e5982da..87aa8825d0 100644
--- a/dlls/advapi32/crypt.c
+++ b/dlls/advapi32/crypt.c
@@ -68,11 +68,11 @@ static inline PWSTR CRYPT_GetProvKeyName(PCWSTR pProvName)
 	};
 	PWSTR keyname;
 
-	keyname = CRYPT_Alloc((strlenW(KEYSTR) + strlenW(pProvName) +1)*sizeof(WCHAR));
+	keyname = CRYPT_Alloc((ARRAY_SIZE(KEYSTR) + strlenW(pProvName))*sizeof(WCHAR));
 	if (keyname)
 	{
 		strcpyW(keyname, KEYSTR);
-		strcpyW(keyname + strlenW(KEYSTR), pProvName);
+		strcpyW(keyname + ARRAY_SIZE(KEYSTR) - 1, pProvName);
 	} else
 		SetLastError(ERROR_NOT_ENOUGH_MEMORY);
 	return keyname;
@@ -94,14 +94,15 @@ static inline PWSTR CRYPT_GetTypeKeyName(DWORD dwType, BOOL user)
                 'C','r','y','p','t','o','g','r','a','p','h','y','\\',
                 'P','r','o','v','i','d','e','r',' ','T','y','p','e',' ','X','X','X',0
 	};
+	SIZE_T keyname_size = user ? sizeof(USERSTR) : sizeof(MACHINESTR);
 	PWSTR keyname;
 	PWSTR ptr;
 
-	keyname = CRYPT_Alloc( ((user ? strlenW(USERSTR) : strlenW(MACHINESTR)) +1)*sizeof(WCHAR));
+	keyname = CRYPT_Alloc(keyname_size);
 	if (keyname)
 	{
 		user ? strcpyW(keyname, USERSTR) : strcpyW(keyname, MACHINESTR);
-		ptr = keyname + strlenW(keyname);
+		ptr = keyname + keyname_size/sizeof(WCHAR) - 1;
 		*(--ptr) = (dwType % 10) + '0';
 		*(--ptr) = ((dwType / 10) % 10) + '0';
 		*(--ptr) = (dwType / 100) + '0';
@@ -312,7 +313,7 @@ static void CRYPT_CreateMachineGuid(void)
                                  uuid.Data4[6], uuid.Data4[7] );
                         RegSetValueExW(key, machineGuidW, 0, REG_SZ,
                                        (const BYTE *)buf,
-                                       (lstrlenW(buf)+1)*sizeof(WCHAR));
+                                       sizeof(buf));
                     }
 		}
 		RegCloseKey(key);
-- 
2.20.1




More information about the wine-devel mailing list