Package: steghide
Version: 0.5.1-5
Severity: serious
Tags: patch

steghide fails to build because it contains a number of
incompatibilities with GCC 4.0:

> if g++ -DHAVE_CONFIG_H -I. -I. -I..  -DLOCALEDIR=\"/usr/share/locale\"   -O2 
> -Wall -MT AuFile.o -MD -MP -MF ".deps/AuFile.Tpo" \
>   -c -o AuFile.o `test -f 'AuFile.cc' || echo './'`AuFile.cc; \
> then mv ".deps/AuFile.Tpo" ".deps/AuFile.Po"; \
> else rm -f ".deps/AuFile.Tpo"; exit 1; \
> fi
> CvrStgObject.h:40: warning: 'class CvrStgObject' has virtual functions but 
> non-virtual destructor
> SampleValue.h: In member function 'size_t SampleValueHash::operator()(const 
> SampleValue*) const':
> SampleValue.h:166: error: 'hash' is not a member of 'sgi'
> SampleValue.h:166: error: expected primary-expression before '>' token
> SampleValue.h:166: error: 'h' was not declared in this scope
> AudioData.h: At global scope:
> AudioData.h:37: warning: 'class AudioData' has virtual functions but 
> non-virtual destructor
> AuData.h:29: error: explicit specialization of 'BYTE AudioDataImpl<AuMuLaw, 
> BYTE, AudioSampleValue<AuMuLaw, BYTE> >::readValue(BinaryIO*) const' must be 
> introduced by 'template <>'
> AuData.h:29: error: template-id 'readValue<>' for 'BYTE 
> AudioDataImpl<AuMuLaw, BYTE, AudioSampleValue<AuMuLaw, BYTE> 
> >::readValue(BinaryIO*) const' does not match any template declaration
> AuData.h:29: error: invalid function declaration
> AuData.h:30: error: explicit specialization of 'void AudioDataImpl<AuMuLaw, 
> BYTE, AudioSampleValue<AuMuLaw, BYTE> >::writeValue(BinaryIO*, BYTE) const' 
> must be introduced by 'template <>'
> AuData.h:30: error: template-id 'writeValue<>' for 'void 
> AudioDataImpl<AuMuLaw, BYTE, AudioSampleValue<AuMuLaw, BYTE> 
> >::writeValue(BinaryIO*, BYTE) const' does not match any template declaration
> AuData.h:30: error: invalid function declaration
> AuData.h:34: error: explicit specialization of 'SBYTE AudioDataImpl<AuPCM8, 
> SBYTE, AudioSampleValue<AuPCM8, SBYTE> >::readValue(BinaryIO*) const' must be 
> introduced by 'template <>'
> AuData.h:34: error: template-id 'readValue<>' for 'SBYTE 
> AudioDataImpl<AuPCM8, SBYTE, AudioSampleValue<AuPCM8, SBYTE> 
> >::readValue(BinaryIO*) const' does not match any template declaration
> AuData.h:34: error: invalid function declaration
> AuData.h:35: error: explicit specialization of 'void AudioDataImpl<AuPCM8, 
> SBYTE, AudioSampleValue<AuPCM8, SBYTE> >::writeValue(BinaryIO*, SBYTE) const' 
> must be introduced by 'template <>'
> AuData.h:35: error: template-id 'writeValue<>' for 'void 
> AudioDataImpl<AuPCM8, SBYTE, AudioSampleValue<AuPCM8, SBYTE> 
> >::writeValue(BinaryIO*, SBYTE) const' does not match any template declaration
> AuData.h:35: error: invalid function declaration
> AuData.h:39: error: explicit specialization of 'SWORD16 
> AudioDataImpl<AuPCM16, SWORD16, AudioSampleValue<AuPCM16, SWORD16> 
> >::readValue(BinaryIO*) const' must be introduced by 'template <>'
> AuData.h:39: error: template-id 'readValue<>' for 'SWORD16 
> AudioDataImpl<AuPCM16, SWORD16, AudioSampleValue<AuPCM16, SWORD16> 
> >::readValue(BinaryIO*) const' does not match any template declaration
> AuData.h:39: error: invalid function declaration
> AuData.h:40: error: explicit specialization of 'void AudioDataImpl<AuPCM16, 
> SWORD16, AudioSampleValue<AuPCM16, SWORD16> >::writeValue(BinaryIO*, SWORD16) 
> const' must be introduced by 'template <>'
> AuData.h:40: error: template-id 'writeValue<>' for 'void 
> AudioDataImpl<AuPCM16, SWORD16, AudioSampleValue<AuPCM16, SWORD16> 
> >::writeValue(BinaryIO*, SWORD16) const' does not match any template 
> declaration
> AuData.h:40: error: invalid function declaration
> AuData.h:44: error: explicit specialization of 'SWORD32 
> AudioDataImpl<AuPCM32, SWORD32, AudioSampleValue<AuPCM32, SWORD32> 
> >::readValue(BinaryIO*) const' must be introduced by 'template <>'
> AuData.h:44: error: template-id 'readValue<>' for 'SWORD32 
> AudioDataImpl<AuPCM32, SWORD32, AudioSampleValue<AuPCM32, SWORD32> 
> >::readValue(BinaryIO*) const' does not match any template declaration
> AuData.h:44: error: invalid function declaration
> AuData.h:45: error: explicit specialization of 'void AudioDataImpl<AuPCM32, 
> SWORD32, AudioSampleValue<AuPCM32, SWORD32> >::writeValue(BinaryIO*, SWORD32) 
> const' must be introduced by 'template <>'
> AuData.h:45: error: template-id 'writeValue<>' for 'void 
> AudioDataImpl<AuPCM32, SWORD32, AudioSampleValue<AuPCM32, SWORD32> 
> >::writeValue(BinaryIO*, SWORD32) const' does not match any template 
> declaration
> AuData.h:45: error: invalid function declaration

The attached patch fixes these incompatibilities.

-- 
Matt
only in patch2:
unchanged:
--- steghide-0.5.1.orig/src/ProgressOutput.h
+++ steghide-0.5.1/src/ProgressOutput.h
@@ -62,9 +62,9 @@
         * \param rate the rate of matched vertices
         * \param avgweight the average edge weight (is not printed if not 
given)
         **/
-       void done (float rate, float avgweight = NoAvgWeight) const ;
+       void done (float rate, float avgweight = 1.0) const ;
 
-       static const float NoAvgWeight = -1.0 ;
+       static float NoAvgWeight ;
 
        protected:
        std::string vcompose (const char *msgfmt, va_list ap) const ;
only in patch2:
unchanged:
--- steghide-0.5.1.orig/src/wrapper_hash_map.h
+++ steghide-0.5.1/src/wrapper_hash_map.h
@@ -29,7 +29,7 @@
     namespace sgi { using ::hash ; using ::hash_map ; } ;
 # else
 #  include <ext/hash_map>
-#  if __GNUC_MINOR__ == 0
+#  if __GNUC__ == 3 &&  __GNUC_MINOR__ == 0
     namespace sgi = std ;                      // GCC 3.0
 #  else
     namespace sgi = __gnu_cxx ;        // GCC 3.1 and later
only in patch2:
unchanged:
--- steghide-0.5.1.orig/src/wrapper_hash_set.h
+++ steghide-0.5.1/src/wrapper_hash_set.h
@@ -30,7 +30,7 @@
     namespace sgi { using ::hash ; using ::hash_set ; } ;
 # else
 #  include <ext/hash_set>
-#  if __GNUC_MINOR__ == 0
+#  if __GNUC__ == 3 && __GNUC_MINOR__ == 0
     namespace sgi = std ;                      // GCC 3.0
 #  else
     namespace sgi = ::__gnu_cxx ;      // GCC 3.1 and later
only in patch2:
unchanged:
--- steghide-0.5.1.orig/src/AuData.h
+++ steghide-0.5.1/src/AuData.h
@@ -26,22 +26,22 @@
 
 // AuMuLawAudioData
 typedef AudioDataImpl<AuMuLaw,BYTE> AuMuLawAudioData ;
-inline BYTE AuMuLawAudioData::readValue (BinaryIO* io) const { return 
(io->read8()) ; }
-inline void AuMuLawAudioData::writeValue (BinaryIO* io, BYTE v) const { 
io->write8(v) ; }
+template <> inline BYTE AuMuLawAudioData::readValue (BinaryIO* io) const { 
return (io->read8()) ; }
+template <> inline void AuMuLawAudioData::writeValue (BinaryIO* io, BYTE v) 
const { io->write8(v) ; }
 
 // AuPCM8AudioData
 typedef AudioDataImpl<AuPCM8,SBYTE> AuPCM8AudioData ;
-inline SBYTE AuPCM8AudioData::readValue (BinaryIO* io) const { return ((SBYTE) 
io->read8()) ; }
-inline void AuPCM8AudioData::writeValue (BinaryIO* io, SBYTE v) const { 
io->write8((BYTE) v) ; }
+template <> inline SBYTE AuPCM8AudioData::readValue (BinaryIO* io) const { 
return ((SBYTE) io->read8()) ; }
+template <> inline void AuPCM8AudioData::writeValue (BinaryIO* io, SBYTE v) 
const { io->write8((BYTE) v) ; }
 
 // AuPCM16AudioData
 typedef AudioDataImpl<AuPCM16,SWORD16> AuPCM16AudioData ;
-inline SWORD16 AuPCM16AudioData::readValue (BinaryIO* io) const { return 
((SWORD16) io->read16_be()) ; }
-inline void AuPCM16AudioData::writeValue (BinaryIO* io, SWORD16 v) const { 
io->write16_be((UWORD16) v) ; }
+template <> inline SWORD16 AuPCM16AudioData::readValue (BinaryIO* io) const { 
return ((SWORD16) io->read16_be()) ; }
+template <> inline void AuPCM16AudioData::writeValue (BinaryIO* io, SWORD16 v) 
const { io->write16_be((UWORD16) v) ; }
 
 // AuPCM32AudioData
 typedef AudioDataImpl<AuPCM32,SWORD32> AuPCM32AudioData ;
-inline SWORD32 AuPCM32AudioData::readValue (BinaryIO* io) const { return 
((SWORD32) io->read32_be()) ; }
-inline void AuPCM32AudioData::writeValue (BinaryIO* io, SWORD32 v) const { 
io->write32_be((UWORD32) v) ; }
+template <> inline SWORD32 AuPCM32AudioData::readValue (BinaryIO* io) const { 
return ((SWORD32) io->read32_be()) ; }
+template <> inline void AuPCM32AudioData::writeValue (BinaryIO* io, SWORD32 v) 
const { io->write32_be((UWORD32) v) ; }
 
 #endif // ndef SH_AUDATA_H
only in patch2:
unchanged:
--- steghide-0.5.1.orig/src/Arguments.h
+++ steghide-0.5.1/src/Arguments.h
@@ -100,7 +100,7 @@
        static const VERBOSITY  Default_Verbosity = NORMAL ;
        static const unsigned long      Default_Radius = 0 ; // there is no 
default radius for all file formats
        static const unsigned int       Max_Algorithm = 3 ;
-       static const float              Default_Goal = 100.0 ;
+       static float                    Default_Goal ;
        static const DEBUGCOMMAND       Default_DebugCommand = NONE ;
        static const bool               Default_Check = false ;
        static const unsigned int       Default_DebugLevel = 0 ;
only in patch2:
unchanged:
--- steghide-0.5.1.orig/src/Arguments.cc
+++ steghide-0.5.1/src/Arguments.cc
@@ -28,6 +28,8 @@
 #include "error.h"
 #include "msg.h"
 
+float Arguments::Default_Goal = 100.0 ;
+
 // the global Arguments object
 Arguments Args ;
 
only in patch2:
unchanged:
--- steghide-0.5.1.orig/src/ProgressOutput.cc
+++ steghide-0.5.1/src/ProgressOutput.cc
@@ -23,6 +23,8 @@
 #include "ProgressOutput.h"
 #include "common.h"
 
+float ProgressOutput::NoAvgWeight = 1.0 ;
+
 ProgressOutput::ProgressOutput ()
        : Message("__nomessage__")
 {

Attachment: signature.asc
Description: Digital signature

Reply via email to