Module: wine Branch: master Commit: 9540d762ad67cedb0c32510b2da2061bff975758 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9540d762ad67cedb0c32510b2d...
Author: James Hawkins truiken@gmail.com Date: Mon Mar 2 02:34:32 2009 -0800
msi: Handle reading from a NULL stream.
---
dlls/msi/record.c | 6 ++++++ dlls/msi/tests/db.c | 7 ++----- 2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/msi/record.c b/dlls/msi/record.c index 2b7131a..d484cb8 100644 --- a/dlls/msi/record.c +++ b/dlls/msi/record.c @@ -765,6 +765,12 @@ UINT MSI_RecordReadStream(MSIRECORD *rec, UINT iField, char *buf, LPDWORD sz) if( iField > rec->count) return ERROR_INVALID_PARAMETER;
+ if ( rec->fields[iField].type == MSIFIELD_NULL ) + { + *sz = 0; + return ERROR_INVALID_DATA; + } + if( rec->fields[iField].type != MSIFIELD_STREAM ) return ERROR_INVALID_DATATYPE;
diff --git a/dlls/msi/tests/db.c b/dlls/msi/tests/db.c index e1e9fb7..b2c7d06 100644 --- a/dlls/msi/tests/db.c +++ b/dlls/msi/tests/db.c @@ -6077,12 +6077,9 @@ static void test_storages_table(void) size = MAX_PATH; lstrcpyA(buf, "apple"); r = MsiRecordReadStream(hrec, 2, buf, &size); + ok(r == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %d\n", r); ok(!lstrcmp(buf, "apple"), "Expected buf to be unchanged, got %s\n", buf); - todo_wine - { - ok(r == ERROR_INVALID_DATA, "Expected ERROR_INVALID_DATA, got %d\n", r); - ok(size == 0, "Expected 0, got %d\n", size); - } + ok(size == 0, "Expected 0, got %d\n", size);
MsiCloseHandle(hrec);