Rob Shearman : mciavi32: Fix the buffer length passed into strncat in MCIAVI_mciSet.

Alexandre Julliard julliard at winehq.org
Mon Feb 25 06:51:43 CST 2008


Module: wine
Branch: master
Commit: 583818513307d8d750cc0232c5d604ef9905ec55
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=583818513307d8d750cc0232c5d604ef9905ec55

Author: Rob Shearman <rob at codeweavers.com>
Date:   Mon Feb 25 09:00:47 2008 +0000

mciavi32: Fix the buffer length passed into strncat in MCIAVI_mciSet.

The number of remaining characters should be passed in, not the total 
buffer size.

---

 dlls/mciavi32/info.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/dlls/mciavi32/info.c b/dlls/mciavi32/info.c
index 7787fb2..0b5752a 100644
--- a/dlls/mciavi32/info.c
+++ b/dlls/mciavi32/info.c
@@ -230,22 +230,22 @@ DWORD	MCIAVI_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms)
 	strcpy(buffer, "MCI_SET_ON:");
 
 	if (dwFlags & MCI_SET_VIDEO) {
-	    strncat(buffer, " video", sizeof(buffer));
+	    strncat(buffer, " video", sizeof(buffer)-sizeof("MCI_SET_ON:"));
 	    wma->dwSet |= 4;
 	}
 	if (dwFlags & MCI_SET_AUDIO) {
-	    strncat(buffer, " audio", sizeof(buffer));
+	    strncat(buffer, " audio", sizeof(buffer)-sizeof("MCI_SET_ON:"));
 	    switch (lpParms->dwAudio) {
 	    case MCI_SET_AUDIO_ALL:
-		strncat(buffer, " all", sizeof(buffer));
+		strncat(buffer, " all", sizeof(buffer)-sizeof("MCI_SET_ON:"));
 		wma->dwSet |= 3;
 		break;
 	    case MCI_SET_AUDIO_LEFT:
-		strncat(buffer, " left", sizeof(buffer));
+		strncat(buffer, " left", sizeof(buffer)-sizeof("MCI_SET_ON:"));
 		wma->dwSet |= 1;
 		break;
 	    case MCI_SET_AUDIO_RIGHT:
-		strncat(buffer, " right", sizeof(buffer));
+		strncat(buffer, " right", sizeof(buffer)-sizeof("MCI_SET_ON:"));
 		wma->dwSet |= 2;
 		break;
 	    default:
@@ -264,22 +264,22 @@ DWORD	MCIAVI_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms)
 
 	strcpy(buffer, "MCI_SET_OFF:");
 	if (dwFlags & MCI_SET_VIDEO) {
-	    strncat(buffer, " video", sizeof(buffer));
+	    strncat(buffer, " video", sizeof(buffer)-sizeof("MCI_SET_OFF:"));
 	    wma->dwSet &= ~4;
 	}
 	if (dwFlags & MCI_SET_AUDIO) {
-	    strncat(buffer, " audio", sizeof(buffer));
+	    strncat(buffer, " audio", sizeof(buffer)-sizeof("MCI_SET_OFF:"));
 	    switch (lpParms->dwAudio) {
 	    case MCI_SET_AUDIO_ALL:
-		strncat(buffer, " all", sizeof(buffer));
+		strncat(buffer, " all", sizeof(buffer)-sizeof("MCI_SET_OFF:"));
 		wma->dwSet &= ~3;
 		break;
 	    case MCI_SET_AUDIO_LEFT:
-		strncat(buffer, " left", sizeof(buffer));
+		strncat(buffer, " left", sizeof(buffer)-sizeof("MCI_SET_OFF:"));
 		wma->dwSet &= ~2;
 		break;
 	    case MCI_SET_AUDIO_RIGHT:
-		strncat(buffer, " right", sizeof(buffer));
+		strncat(buffer, " right", sizeof(buffer)-sizeof("MCI_SET_OFF:"));
 		wma->dwSet &= ~2;
 		break;
 	    default:
@@ -288,7 +288,7 @@ DWORD	MCIAVI_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms)
 	    }
 	}
 	if (dwFlags & MCI_DGV_SET_SEEK_EXACTLY) {
-	    strncat(buffer, " seek_exactly", sizeof(buffer));
+	    strncat(buffer, " seek_exactly", sizeof(buffer)-strlen(buffer)-1);
 	}
 	FIXME("%s\n", buffer);
     }




More information about the wine-cvs mailing list