mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 20:59:54 +00:00
Eliminate yet more fixed length buffers.
This commit is contained in:
parent
261e376495
commit
ca2c8c867f
@ -129,7 +129,7 @@ typedef struct tagMSITEMPFILE
|
|||||||
typedef struct tagMSIAPPID
|
typedef struct tagMSIAPPID
|
||||||
{
|
{
|
||||||
struct list entry;
|
struct list entry;
|
||||||
WCHAR AppID[IDENTIFIER_SIZE]; /* Primary key */
|
LPWSTR AppID; /* Primary key */
|
||||||
LPWSTR RemoteServerName;
|
LPWSTR RemoteServerName;
|
||||||
LPWSTR LocalServer;
|
LPWSTR LocalServer;
|
||||||
LPWSTR ServiceParameters;
|
LPWSTR ServiceParameters;
|
||||||
@ -143,8 +143,8 @@ typedef struct tagMSIPROGID MSIPROGID;
|
|||||||
typedef struct tagMSICLASS
|
typedef struct tagMSICLASS
|
||||||
{
|
{
|
||||||
struct list entry;
|
struct list entry;
|
||||||
WCHAR CLSID[IDENTIFIER_SIZE]; /* Primary Key */
|
LPWSTR clsid; /* Primary Key */
|
||||||
WCHAR Context[IDENTIFIER_SIZE]; /* Primary Key */
|
LPWSTR Context; /* Primary Key */
|
||||||
MSICOMPONENT *Component;
|
MSICOMPONENT *Component;
|
||||||
MSIPROGID *ProgID;
|
MSIPROGID *ProgID;
|
||||||
LPWSTR ProgIDText;
|
LPWSTR ProgIDText;
|
||||||
@ -205,7 +205,7 @@ struct tagMSIMIME
|
|||||||
struct list entry;
|
struct list entry;
|
||||||
LPWSTR ContentType; /* Primary Key */
|
LPWSTR ContentType; /* Primary Key */
|
||||||
MSIEXTENSION *Extension;
|
MSIEXTENSION *Extension;
|
||||||
WCHAR CLSID[IDENTIFIER_SIZE];
|
LPWSTR clsid;
|
||||||
MSICLASS *Class;
|
MSICLASS *Class;
|
||||||
/* not in the table, set during installation */
|
/* not in the table, set during installation */
|
||||||
BOOL InstallMe;
|
BOOL InstallMe;
|
||||||
|
@ -56,7 +56,6 @@ extern const WCHAR szUnregisterProgIdInfo[];
|
|||||||
|
|
||||||
static MSIAPPID *load_appid( MSIPACKAGE* package, MSIRECORD *row )
|
static MSIAPPID *load_appid( MSIPACKAGE* package, MSIRECORD *row )
|
||||||
{
|
{
|
||||||
DWORD sz;
|
|
||||||
LPCWSTR buffer;
|
LPCWSTR buffer;
|
||||||
MSIAPPID *appid;
|
MSIAPPID *appid;
|
||||||
|
|
||||||
@ -66,8 +65,7 @@ static MSIAPPID *load_appid( MSIPACKAGE* package, MSIRECORD *row )
|
|||||||
if (!appid)
|
if (!appid)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
sz = IDENTIFIER_SIZE;
|
appid->AppID = load_dynamic_stringW( row, 1 );
|
||||||
MSI_RecordGetStringW(row, 1, appid->AppID, &sz);
|
|
||||||
TRACE("loading appid %s\n", debugstr_w( appid->AppID ));
|
TRACE("loading appid %s\n", debugstr_w( appid->AppID ));
|
||||||
|
|
||||||
buffer = MSI_RecordGetString(row,2);
|
buffer = MSI_RecordGetString(row,2);
|
||||||
@ -228,7 +226,7 @@ static MSIPROGID *load_given_progid(MSIPACKAGE *package, LPCWSTR name)
|
|||||||
static MSICLASS *load_class( MSIPACKAGE* package, MSIRECORD *row )
|
static MSICLASS *load_class( MSIPACKAGE* package, MSIRECORD *row )
|
||||||
{
|
{
|
||||||
MSICLASS *cls;
|
MSICLASS *cls;
|
||||||
DWORD sz,i;
|
DWORD i;
|
||||||
LPCWSTR buffer;
|
LPCWSTR buffer;
|
||||||
|
|
||||||
/* fill in the data */
|
/* fill in the data */
|
||||||
@ -239,11 +237,9 @@ static MSICLASS *load_class( MSIPACKAGE* package, MSIRECORD *row )
|
|||||||
|
|
||||||
list_add_tail( &package->classes, &cls->entry );
|
list_add_tail( &package->classes, &cls->entry );
|
||||||
|
|
||||||
sz = IDENTIFIER_SIZE;
|
cls->clsid = load_dynamic_stringW( row, 1 );
|
||||||
MSI_RecordGetStringW(row, 1, cls->CLSID, &sz);
|
TRACE("loading class %s\n",debugstr_w(cls->clsid));
|
||||||
TRACE("loading class %s\n",debugstr_w(cls->CLSID));
|
cls->Context = load_dynamic_stringW( row, 2 );
|
||||||
sz = IDENTIFIER_SIZE;
|
|
||||||
MSI_RecordGetStringW(row, 2, cls->Context, &sz);
|
|
||||||
buffer = MSI_RecordGetString(row,3);
|
buffer = MSI_RecordGetString(row,3);
|
||||||
cls->Component = get_loaded_component(package, buffer);
|
cls->Component = get_loaded_component(package, buffer);
|
||||||
|
|
||||||
@ -345,7 +341,7 @@ static MSICLASS *load_given_class(MSIPACKAGE *package, LPCWSTR classid)
|
|||||||
/* check for classes already loaded */
|
/* check for classes already loaded */
|
||||||
LIST_FOR_EACH_ENTRY( cls, &package->classes, MSICLASS, entry )
|
LIST_FOR_EACH_ENTRY( cls, &package->classes, MSICLASS, entry )
|
||||||
{
|
{
|
||||||
if (lstrcmpiW( cls->CLSID, classid )==0)
|
if (lstrcmpiW( cls->clsid, classid )==0)
|
||||||
{
|
{
|
||||||
TRACE("found class %s (%p)\n",debugstr_w(classid), cls);
|
TRACE("found class %s (%p)\n",debugstr_w(classid), cls);
|
||||||
return cls;
|
return cls;
|
||||||
@ -366,7 +362,6 @@ static MSIEXTENSION *load_given_extension( MSIPACKAGE *package, LPCWSTR extensio
|
|||||||
|
|
||||||
static MSIMIME *load_mime( MSIPACKAGE* package, MSIRECORD *row )
|
static MSIMIME *load_mime( MSIPACKAGE* package, MSIRECORD *row )
|
||||||
{
|
{
|
||||||
DWORD sz;
|
|
||||||
LPCWSTR buffer;
|
LPCWSTR buffer;
|
||||||
MSIMIME *mt;
|
MSIMIME *mt;
|
||||||
|
|
||||||
@ -382,9 +377,8 @@ static MSIMIME *load_mime( MSIPACKAGE* package, MSIRECORD *row )
|
|||||||
buffer = MSI_RecordGetString( row, 2 );
|
buffer = MSI_RecordGetString( row, 2 );
|
||||||
mt->Extension = load_given_extension( package, buffer );
|
mt->Extension = load_given_extension( package, buffer );
|
||||||
|
|
||||||
sz = IDENTIFIER_SIZE;
|
mt->clsid = load_dynamic_stringW( row, 3 );
|
||||||
MSI_RecordGetStringW( row, 3, mt->CLSID, &sz );
|
mt->Class = load_given_class( package, mt->clsid );
|
||||||
mt->Class = load_given_class( package, mt->CLSID );
|
|
||||||
|
|
||||||
list_add_tail( &package->mimes, &mt->entry );
|
list_add_tail( &package->mimes, &mt->entry );
|
||||||
|
|
||||||
@ -549,7 +543,7 @@ static UINT iterate_all_classes(MSIRECORD *rec, LPVOID param)
|
|||||||
|
|
||||||
LIST_FOR_EACH_ENTRY( cls, &package->classes, MSICLASS, entry )
|
LIST_FOR_EACH_ENTRY( cls, &package->classes, MSICLASS, entry )
|
||||||
{
|
{
|
||||||
if (strcmpiW( clsid, cls->CLSID ))
|
if (strcmpiW( clsid, cls->clsid ))
|
||||||
continue;
|
continue;
|
||||||
if (strcmpW( context, cls->Context ))
|
if (strcmpW( context, cls->Context ))
|
||||||
continue;
|
continue;
|
||||||
@ -886,18 +880,18 @@ UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
|
|||||||
ACTION_VerifyFeatureForAction( feature, INSTALLSTATE_ADVERTISED )))
|
ACTION_VerifyFeatureForAction( feature, INSTALLSTATE_ADVERTISED )))
|
||||||
{
|
{
|
||||||
TRACE("Skipping class %s reg due to disabled feature %s\n",
|
TRACE("Skipping class %s reg due to disabled feature %s\n",
|
||||||
debugstr_w(cls->CLSID),
|
debugstr_w(cls->clsid),
|
||||||
debugstr_w(feature->Feature));
|
debugstr_w(feature->Feature));
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("Registering class %s (%p)\n", debugstr_w(cls->CLSID), cls);
|
TRACE("Registering class %s (%p)\n", debugstr_w(cls->clsid), cls);
|
||||||
|
|
||||||
cls->Installed = TRUE;
|
cls->Installed = TRUE;
|
||||||
mark_progid_for_install( package, cls->ProgID );
|
mark_progid_for_install( package, cls->ProgID );
|
||||||
|
|
||||||
RegCreateKeyW( hkey, cls->CLSID, &hkey2 );
|
RegCreateKeyW( hkey, cls->clsid, &hkey2 );
|
||||||
|
|
||||||
if (cls->Description)
|
if (cls->Description)
|
||||||
RegSetValueExW( hkey2, NULL, 0, REG_SZ, (LPBYTE)cls->Description,
|
RegSetValueExW( hkey2, NULL, 0, REG_SZ, (LPBYTE)cls->Description,
|
||||||
@ -1055,8 +1049,8 @@ UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
|
|||||||
if (ptr2)
|
if (ptr2)
|
||||||
*ptr2 = 0;
|
*ptr2 = 0;
|
||||||
keyname = HeapAlloc(GetProcessHeap(),0,(strlenW(szFileType_fmt)+
|
keyname = HeapAlloc(GetProcessHeap(),0,(strlenW(szFileType_fmt)+
|
||||||
strlenW(cls->CLSID) + 4) * sizeof(WCHAR));
|
strlenW(cls->clsid) + 4) * sizeof(WCHAR));
|
||||||
sprintfW( keyname, szFileType_fmt, cls->CLSID, index );
|
sprintfW( keyname, szFileType_fmt, cls->clsid, index );
|
||||||
|
|
||||||
RegCreateKeyW(HKEY_CLASSES_ROOT,keyname,&hkey2);
|
RegCreateKeyW(HKEY_CLASSES_ROOT,keyname,&hkey2);
|
||||||
RegSetValueExW(hkey2,NULL,0,REG_SZ, (LPVOID)ptr,
|
RegSetValueExW(hkey2,NULL,0,REG_SZ, (LPVOID)ptr,
|
||||||
@ -1075,7 +1069,7 @@ UINT ACTION_RegisterClassInfo(MSIPACKAGE *package)
|
|||||||
|
|
||||||
uirow = MSI_CreateRecord(1);
|
uirow = MSI_CreateRecord(1);
|
||||||
|
|
||||||
MSI_RecordSetStringW( uirow, 1, cls->CLSID );
|
MSI_RecordSetStringW( uirow, 1, cls->clsid );
|
||||||
ui_actiondata(package,szRegisterClassInfo,uirow);
|
ui_actiondata(package,szRegisterClassInfo,uirow);
|
||||||
msiobj_release(&uirow->hdr);
|
msiobj_release(&uirow->hdr);
|
||||||
}
|
}
|
||||||
@ -1105,11 +1099,11 @@ static UINT register_progid_base(MSIPACKAGE* package, MSIPROGID* progid,
|
|||||||
if (progid->Class)
|
if (progid->Class)
|
||||||
{
|
{
|
||||||
RegCreateKeyW(hkey,szCLSID,&hkey2);
|
RegCreateKeyW(hkey,szCLSID,&hkey2);
|
||||||
RegSetValueExW( hkey2, NULL, 0, REG_SZ, (LPBYTE)progid->Class->CLSID,
|
RegSetValueExW( hkey2, NULL, 0, REG_SZ, (LPBYTE)progid->Class->clsid,
|
||||||
(strlenW(progid->Class->CLSID)+1) * sizeof(WCHAR) );
|
(strlenW(progid->Class->clsid)+1) * sizeof(WCHAR) );
|
||||||
|
|
||||||
if (clsid)
|
if (clsid)
|
||||||
strcpyW( clsid, progid->Class->CLSID );
|
strcpyW( clsid, progid->Class->clsid );
|
||||||
|
|
||||||
RegCloseKey(hkey2);
|
RegCloseKey(hkey2);
|
||||||
}
|
}
|
||||||
@ -1493,10 +1487,8 @@ UINT ACTION_RegisterMIMEInfo(MSIPACKAGE *package)
|
|||||||
HeapFree(GetProcessHeap(),0,extension);
|
HeapFree(GetProcessHeap(),0,extension);
|
||||||
HeapFree(GetProcessHeap(),0,key);
|
HeapFree(GetProcessHeap(),0,key);
|
||||||
|
|
||||||
if (mt->CLSID[0])
|
if (mt->clsid)
|
||||||
{
|
|
||||||
FIXME("Handle non null for field 3\n");
|
FIXME("Handle non null for field 3\n");
|
||||||
}
|
|
||||||
|
|
||||||
RegCloseKey(hkey);
|
RegCloseKey(hkey);
|
||||||
|
|
||||||
|
@ -528,6 +528,8 @@ void ACTION_free_package_structures( MSIPACKAGE* package)
|
|||||||
MSICLASS *cls = LIST_ENTRY( item, MSICLASS, entry );
|
MSICLASS *cls = LIST_ENTRY( item, MSICLASS, entry );
|
||||||
|
|
||||||
list_remove( &cls->entry );
|
list_remove( &cls->entry );
|
||||||
|
HeapFree( GetProcessHeap(), 0, cls->clsid );
|
||||||
|
HeapFree( GetProcessHeap(), 0, cls->Context );
|
||||||
HeapFree( GetProcessHeap(), 0, cls->Description );
|
HeapFree( GetProcessHeap(), 0, cls->Description );
|
||||||
HeapFree( GetProcessHeap(), 0, cls->FileTypeMask );
|
HeapFree( GetProcessHeap(), 0, cls->FileTypeMask );
|
||||||
HeapFree( GetProcessHeap(), 0, cls->IconPath );
|
HeapFree( GetProcessHeap(), 0, cls->IconPath );
|
||||||
@ -562,6 +564,7 @@ void ACTION_free_package_structures( MSIPACKAGE* package)
|
|||||||
MSIMIME *mt = LIST_ENTRY( item, MSIMIME, entry );
|
MSIMIME *mt = LIST_ENTRY( item, MSIMIME, entry );
|
||||||
|
|
||||||
list_remove( &mt->entry );
|
list_remove( &mt->entry );
|
||||||
|
HeapFree( GetProcessHeap(), 0, mt->clsid );
|
||||||
HeapFree( GetProcessHeap(), 0, mt->ContentType );
|
HeapFree( GetProcessHeap(), 0, mt->ContentType );
|
||||||
HeapFree( GetProcessHeap(), 0, mt );
|
HeapFree( GetProcessHeap(), 0, mt );
|
||||||
}
|
}
|
||||||
@ -571,6 +574,7 @@ void ACTION_free_package_structures( MSIPACKAGE* package)
|
|||||||
MSIAPPID *appid = LIST_ENTRY( item, MSIAPPID, entry );
|
MSIAPPID *appid = LIST_ENTRY( item, MSIAPPID, entry );
|
||||||
|
|
||||||
list_remove( &appid->entry );
|
list_remove( &appid->entry );
|
||||||
|
HeapFree( GetProcessHeap(), 0, appid->AppID );
|
||||||
HeapFree( GetProcessHeap(), 0, appid->RemoteServerName );
|
HeapFree( GetProcessHeap(), 0, appid->RemoteServerName );
|
||||||
HeapFree( GetProcessHeap(), 0, appid->LocalServer );
|
HeapFree( GetProcessHeap(), 0, appid->LocalServer );
|
||||||
HeapFree( GetProcessHeap(), 0, appid->ServiceParameters );
|
HeapFree( GetProcessHeap(), 0, appid->ServiceParameters );
|
||||||
|
Loading…
Reference in New Issue
Block a user