msi: Use CLSIDFromString to make squash_guid a bit more robust.

This commit is contained in:
Mike McCormack 2006-07-24 20:34:05 +09:00 committed by Alexandre Julliard
parent bc673bff01
commit 9f89427291
1 changed files with 8 additions and 14 deletions

View File

@ -189,39 +189,33 @@ BOOL unsquash_guid(LPCWSTR in, LPWSTR out)
BOOL squash_guid(LPCWSTR in, LPWSTR out) BOOL squash_guid(LPCWSTR in, LPWSTR out)
{ {
DWORD i,n=0; DWORD i,n=1;
GUID guid;
if(in[n++] != '{') if (FAILED(CLSIDFromString((LPOLESTR)in, &guid)))
return FALSE; return FALSE;
for(i=0; i<8; i++) for(i=0; i<8; i++)
out[7-i] = in[n++]; out[7-i] = in[n++];
if(in[n++] != '-') n++;
return FALSE;
for(i=0; i<4; i++) for(i=0; i<4; i++)
out[11-i] = in[n++]; out[11-i] = in[n++];
if(in[n++] != '-') n++;
return FALSE;
for(i=0; i<4; i++) for(i=0; i<4; i++)
out[15-i] = in[n++]; out[15-i] = in[n++];
if(in[n++] != '-') n++;
return FALSE;
for(i=0; i<2; i++) for(i=0; i<2; i++)
{ {
out[17+i*2] = in[n++]; out[17+i*2] = in[n++];
out[16+i*2] = in[n++]; out[16+i*2] = in[n++];
} }
if(in[n++] != '-') n++;
return FALSE;
for( ; i<8; i++) for( ; i<8; i++)
{ {
out[17+i*2] = in[n++]; out[17+i*2] = in[n++];
out[16+i*2] = in[n++]; out[16+i*2] = in[n++];
} }
out[32]=0; out[32]=0;
if(in[n++] != '}')
return FALSE;
if(in[n])
return FALSE;
return TRUE; return TRUE;
} }