[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdemultimedia/kscd
From:       Shaheed Haque <srhaque () iee ! org>
Date:       2005-04-03 21:07:59
Message-ID: 20050403210759.D43C75FA () office ! kde ! org
[Download RAW message or body]

CVS commit by shaheed: 

Guard against invalid array accesses. Thanks André!


  M +6 -3      kcompactdisc.cpp   1.5


--- kdemultimedia/kscd/kcompactdisc.cpp  #1.4:1.5
@@ -91,4 +91,7 @@ extern "C"
 ((frames) * 1000 / 75)
 
+#define TRACK_VALID(track) \
+((track) && (track <= m_tracks))
+
 const QString KCompactDisc::defaultDevice = DEFAULT_CD_DEVICE;
 const unsigned KCompactDisc::missingDisc = (unsigned)-1;
@@ -129,5 +132,5 @@ const QString &KCompactDisc::device() co
 unsigned KCompactDisc::discLength() const
 {
-    if (NO_DISC)
+    if (NO_DISC || !m_tracks)
         return 0;
     return FRAMES_TO_MS(m_trackStartFrames[m_tracks - 1] - m_trackStartFrames[0]);
@@ -225,5 +228,5 @@ void KCompactDisc::pause()
 void KCompactDisc::play(unsigned startTrack, unsigned startTrackPosition, unsigned \
endTrack)  {
-    wm_cd_play((startTrack == 0) ? 1 : startTrack, startTrackPosition / 1000, \
(endTrack == 0) ? WM_ENDTRACK : endTrack); +    wm_cd_play(TRACK_VALID(startTrack) ? \
startTrack : 1, startTrackPosition / 1000, TRACK_VALID(endTrack) ? endTrack : \
WM_ENDTRACK );  }
 
@@ -305,5 +308,5 @@ unsigned KCompactDisc::trackLength() con
 unsigned KCompactDisc::trackLength(unsigned track) const
 {
-    if (NO_DISC)
+    if (NO_DISC || !TRACK_VALID(track))
         return 0;
     return cd->trk[track - 1].length * 1000;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic