From 059255705b8e7e7eb787f74ad617cfbc190a2910 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Fri, 7 Aug 2009 22:58:20 +0000 Subject: Fix SCSI inquiry on W32. W32 returns additional bytes containing garbage on pages returning the maximum amount (i.e. 255) of bytes. Ignoring those bytes makes the output being correct. Someone needs to find out why those additional bytes are indicated at all. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22199 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/ipodpatcher/ipodio-win32-scsi.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'rbutil') diff --git a/rbutil/ipodpatcher/ipodio-win32-scsi.c b/rbutil/ipodpatcher/ipodio-win32-scsi.c index 5843ce5d2f..81e2023f75 100644 --- a/rbutil/ipodpatcher/ipodio-win32-scsi.c +++ b/rbutil/ipodpatcher/ipodio-win32-scsi.c @@ -110,7 +110,10 @@ int ipod_scsi_inquiry(struct ipod_t* ipod, int page_code, FALSE); if (status) { - memcpy(buf, sptwb.DataBuf, returned); + /* W32 sometimes returns more bytes with additional garbage. + * Make sure to not copy that garbage. */ + memcpy(buf, sptwb.DataBuf, + (DWORD)bufsize >= returned ? returned : (DWORD)bufsize); return 0; } else { return -1; -- cgit v1.2.3