From 34400353414c46a4c54fca42e8d896570d798544 Mon Sep 17 00:00:00 2001 From: Ulrich Czekalla Date: Wed, 9 Feb 2005 22:22:25 +0000 Subject: [PATCH] Handle 0 length buffers in MSI_FormatRecordW. Remove unused buffer in deformat_string. --- dlls/msi/action.c | 3 +-- dlls/msi/format.c | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 519f15b457..bda6f67f3f 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -518,10 +518,9 @@ DWORD deformat_string(MSIPACKAGE *package, LPCWSTR ptr, WCHAR** data ) { MSIRECORD *rec = MSI_CreateRecord(1); DWORD size = 0; - WCHAR size_buf[2] = {' ',0}; MSI_RecordSetStringW(rec,0,ptr); - MSI_FormatRecordW(package,rec,size_buf,&size); + MSI_FormatRecordW(package,rec,NULL,&size); if (size >= 0) { size++; diff --git a/dlls/msi/format.c b/dlls/msi/format.c index 800d760a64..1711403a27 100644 --- a/dlls/msi/format.c +++ b/dlls/msi/format.c @@ -451,9 +451,12 @@ UINT MSI_FormatRecordW( MSIPACKAGE* package, MSIRECORD* record, LPWSTR buffer, } else { - memcpy(buffer,deformated,(*size)*sizeof(WCHAR)); + if (*size > 0) + { + memcpy(buffer,deformated,(*size)*sizeof(WCHAR)); + buffer[(*size)-1] = 0; + } rc = ERROR_MORE_DATA; - buffer[(*size)-1] = 0; } } else