"James Hawkins" truiken@gmail.com wrote:
This is a resubmit of my original patch that cleans up a->w cross calls in crypt.
Changelog * cleanup a->w cross calls in advapi32/crypt.c
- static const WCHAR KEYSTR[] = {
- 'S','o','f','t','w','a','r','e','\','\',
'M','i','c','r','o','s','o','f','t','\\','\\',
- 'C','r','y','p','t','o','g','r','a','p','h','y','\','\',
- 'D','e','f','a','u','l','t','s','\','\',
- 'P','r','o','v','i','d','e','r','\','\',0
- };
Remove double backslashes here and everywhere else.
- keyname = CRYPT_Alloc(strlen(KEYSTR) + strlen(pProvName) +1);
- keyname = CRYPT_Alloc(strlenW(KEYSTR) + strlenW(pProvName) + 1);
Add '* sizeof(WCHAR)' and everywhere else where storage for unicode strings is allocated.
- keyname = CRYPT_Alloc( (user ? strlen(USERSTR) : strlen(MACHINESTR)) +1);
- keyname = CRYPT_Alloc( (user ? strlenW(USERSTR) : strlenW(MACHINESTR)) +1);
Add '* sizeof(WCHAR)'
- static WCHAR nameW[] = {'N','a','m','e',0};
- static WCHAR typeW[] = {'T','y','p','e',0};
- static WCHAR imagePathW[] = {'I','m','a','g','e',' ','P','a','t','h',0};
- static WCHAR signatureW[] = {'S','i','g','n','a','t','u','r','e',0};
- static WCHAR sigInFileW[] = {'S','i','g','I','n','F','i','l','e',0};
Add 'const'.
- if ( !(provname = CRYPT_Alloc(strlen(pszProvider) +1)) )
- if ( !(provname = CRYPT_Alloc(strlenW(pszProvider) +1)) )
Add '* sizeof(WCHAR)'
- len = ExpandEnvironmentStringsA(temp, NULL, 0);
- len = ExpandEnvironmentStringsW(temp, NULL, 0); if ( !(imagepath = CRYPT_Alloc(len)) )
Add '* sizeof(WCHAR)'
... And lots of similar bugs.