From 9f89427291d54b94e3e390aea5f48504774a4f0d Mon Sep 17 00:00:00 2001 From: Mike McCormack Date: Mon, 24 Jul 2006 20:34:05 +0900 Subject: [PATCH] msi: Use CLSIDFromString to make squash_guid a bit more robust. --- dlls/msi/registry.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c index fe51ae7f24d..e9c33f1f9ad 100644 --- a/dlls/msi/registry.c +++ b/dlls/msi/registry.c @@ -189,39 +189,33 @@ BOOL unsquash_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; + 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; }