Thread: [Audacity-devel] Null pointer dereference in DirManager.cpp
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Michael M. <mmu...@vi...> - 2011-10-13 19:37:12
|
Hi guys, Sentry (our static analysis tool) picked up a NULL pointer dereference in DirManager.cpp today, apparently committed here: http://code.google.com/p/audacity/source/detail?r=11277 In DirManager::HandleXMLTag: if ((pBlockFile == NULL) || // Check the length here so we don't have to do it in each BuildFromXML method. ((mMaxSamples > -1) && // is initialized (pBlockFile->GetLength() > mMaxSamples))) { // See http://bugzilla.audacityteam.org/show_bug.cgi?id=451#c13. // Lock pBlockFile so that the ~BlockFile() will not delete the file on disk. pBlockFile->Lock(); delete pBlockFile; return false; } The variable pBlockFile is tested for NULL and, if it is NULL, it's dereferenced inside the block. Mike -- Mike Mueller Phone: (401) 405-1525 Email: mmu...@vi... http://www.vigilantsw.com/ Static Analysis for C and C++ |
From: Vaughan J. <va...@au...> - 2011-10-13 20:51:29
|
Sheesh, my bad. Thanks, Mike, will fix it. It wasn't "if it is NULL", though. The new code is relevant for the other part of the clause, which can certainly be true when pBlockFile is non-NULL. - V On 10/13/2011 11:41 AM, Michael Mueller wrote: > Hi guys, > > Sentry (our static analysis tool) picked up a NULL pointer dereference > in DirManager.cpp today, apparently committed here: > > http://code.google.com/p/audacity/source/detail?r=11277 > > In DirManager::HandleXMLTag: > > if ((pBlockFile == NULL) || > // Check the length here so we don't have to do it in each > BuildFromXML method. > ((mMaxSamples > -1) && // is initialized > (pBlockFile->GetLength() > mMaxSamples))) > { > // See http://bugzilla.audacityteam.org/show_bug.cgi?id=451#c13. > // Lock pBlockFile so that the ~BlockFile() will not delete the > file on disk. > pBlockFile->Lock(); > delete pBlockFile; > return false; > } > > The variable pBlockFile is tested for NULL and, if it is NULL, it's > dereferenced inside the block. > > Mike > |
From: Vaughan J. <va...@au...> - 2011-10-13 23:01:03
|
Done, commit r11279. There's no need to delete it if we know it's NULL, so I just restructured it into two clauses. Thanks, Mike. - Vaughan On 10/13/2011 1:54 PM, Vaughan Johnson wrote: > Sheesh, my bad. Thanks, Mike, will fix it. > > It wasn't "if it is NULL", though. The new code is relevant for the > other part of the clause, which can certainly be true when pBlockFile is > non-NULL. > > - V > > > On 10/13/2011 11:41 AM, Michael Mueller wrote: >> Hi guys, >> >> Sentry (our static analysis tool) picked up a NULL pointer dereference >> in DirManager.cpp today, apparently committed here: >> >> http://code.google.com/p/audacity/source/detail?r=11277 >> >> In DirManager::HandleXMLTag: >> >> if ((pBlockFile == NULL) || >> // Check the length here so we don't have to do it in each >> BuildFromXML method. >> ((mMaxSamples > -1) && // is initialized >> (pBlockFile->GetLength() > mMaxSamples))) >> { >> // See http://bugzilla.audacityteam.org/show_bug.cgi?id=451#c13. >> // Lock pBlockFile so that the ~BlockFile() will not delete the >> file on disk. >> pBlockFile->Lock(); >> delete pBlockFile; >> return false; >> } >> >> The variable pBlockFile is tested for NULL and, if it is NULL, it's >> dereferenced inside the block. >> >> Mike >> > |
From: Michael M. <mmu...@vi...> - 2011-10-13 23:53:42
|
Any time. :) On Thu, Oct 13, 2011 at 4:04 PM, Vaughan Johnson <va...@au...> wrote: > Done, commit r11279. > > There's no need to delete it if we know it's NULL, so I just > restructured it into two clauses. > > Thanks, Mike. > > - Vaughan > > > > On 10/13/2011 1:54 PM, Vaughan Johnson wrote: >> Sheesh, my bad. Thanks, Mike, will fix it. >> >> It wasn't "if it is NULL", though. The new code is relevant for the >> other part of the clause, which can certainly be true when pBlockFile is >> non-NULL. >> >> - V >> >> >> On 10/13/2011 11:41 AM, Michael Mueller wrote: >>> Hi guys, >>> >>> Sentry (our static analysis tool) picked up a NULL pointer dereference >>> in DirManager.cpp today, apparently committed here: >>> >>> http://code.google.com/p/audacity/source/detail?r=11277 >>> >>> In DirManager::HandleXMLTag: >>> >>> if ((pBlockFile == NULL) || >>> // Check the length here so we don't have to do it in each >>> BuildFromXML method. >>> ((mMaxSamples > -1) && // is initialized >>> (pBlockFile->GetLength() > mMaxSamples))) >>> { >>> // See http://bugzilla.audacityteam.org/show_bug.cgi?id=451#c13. >>> // Lock pBlockFile so that the ~BlockFile() will not delete the >>> file on disk. >>> pBlockFile->Lock(); >>> delete pBlockFile; >>> return false; >>> } >>> >>> The variable pBlockFile is tested for NULL and, if it is NULL, it's >>> dereferenced inside the block. >>> >>> Mike >>> >> > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2d-oct > _______________________________________________ > audacity-devel mailing list > aud...@li... > https://lists.sourceforge.net/lists/listinfo/audacity-devel > -- Mike Mueller Phone: (401) 405-1525 Email: mmu...@vi... http://www.vigilantsw.com/ |