summaryrefslogtreecommitdiffstats
path: root/rbutil/ipodpatcher
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2009-08-07 22:58:20 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2009-08-07 22:58:20 +0000
commit059255705b8e7e7eb787f74ad617cfbc190a2910 (patch)
tree4c9ab8e8c56109d4677119a81462e9aa867fb9ca /rbutil/ipodpatcher
parent8b77ce2d61b5d4dd6a446498a2df295ce5b273c9 (diff)
downloadrockbox-059255705b8e7e7eb787f74ad617cfbc190a2910.tar.gz
rockbox-059255705b8e7e7eb787f74ad617cfbc190a2910.zip
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
Diffstat (limited to 'rbutil/ipodpatcher')
-rw-r--r--rbutil/ipodpatcher/ipodio-win32-scsi.c5
1 files changed, 4 insertions, 1 deletions
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;