Module: wine Branch: refs/heads/master Commit: 9f89427291d54b94e3e390aea5f48504774a4f0d URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=9f89427291d54b94e3e390ae...
Author: Mike McCormack mike@codeweavers.com Date: Mon Jul 24 20:34:05 2006 +0900
msi: Use CLSIDFromString to make squash_guid a bit more robust.
---
dlls/msi/registry.c | 22 ++++++++-------------- 1 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c index fe51ae7..e9c33f1 100644 --- a/dlls/msi/registry.c +++ b/dlls/msi/registry.c @@ -189,39 +189,33 @@ BOOL unsquash_guid(LPCWSTR in, LPWSTR ou
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; + for(i=0; i<8; i++) out[7-i] = in[n++]; - if(in[n++] != '-') - return FALSE; + n++; for(i=0; i<4; i++) out[11-i] = in[n++]; - if(in[n++] != '-') - return FALSE; + n++; for(i=0; i<4; i++) out[15-i] = in[n++]; - if(in[n++] != '-') - return FALSE; + n++; for(i=0; i<2; i++) { out[17+i*2] = in[n++]; out[16+i*2] = in[n++]; } - if(in[n++] != '-') - return FALSE; + n++; for( ; i<8; i++) { out[17+i*2] = in[n++]; out[16+i*2] = in[n++]; } out[32]=0; - if(in[n++] != '}') - return FALSE; - if(in[n]) - return FALSE; return TRUE; }