diff options
author | vdrfan <vdrfan-nospam-@xbmc.org> | 2011-08-01 16:53:16 +0200 |
---|---|---|
committer | vdrfan <vdrfan-nospam-@xbmc.org> | 2011-08-01 16:53:16 +0200 |
commit | 00e3095dd47d6474fa6befcbd85157e27f6f68fa (patch) | |
tree | a4aed879cc1c52d75777a8267fb78f0c83a12f0b /lib/libexif/ExifParse.cpp | |
parent | f29e6b5733709796788c6c44fa04568b16421b65 (diff) |
fixed: make sure libexif is using the correct byte order (intel or motorola) when processing gps information (fixes #8427)
Diffstat (limited to 'lib/libexif/ExifParse.cpp')
-rw-r--r-- | lib/libexif/ExifParse.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/libexif/ExifParse.cpp b/lib/libexif/ExifParse.cpp index 41690df245..74ecbbef78 100644 --- a/lib/libexif/ExifParse.cpp +++ b/lib/libexif/ExifParse.cpp @@ -810,15 +810,15 @@ void CExifParse::ProcessGpsInfo( const unsigned char* const OffsetBase, unsigned ExifLength) { - int NumDirEntries = Get16(DirStart); + int NumDirEntries = Get16(DirStart, m_MotorolaOrder); for (int de=0;de<NumDirEntries;de++) { const unsigned char* DirEntry = DIR_ENTRY_ADDR(DirStart, de); - unsigned Tag = Get16(DirEntry); - unsigned Format = Get16(DirEntry+2); - unsigned Components = (unsigned)Get32(DirEntry+4); + unsigned Tag = Get16(DirEntry, m_MotorolaOrder); + unsigned Format = Get16(DirEntry+2, m_MotorolaOrder); + unsigned Components = (unsigned)Get32(DirEntry+4, m_MotorolaOrder); if ((Format-1) >= NUM_FORMATS) { // (-1) catches illegal zero case as unsigned underflows to positive large. @@ -834,7 +834,7 @@ void CExifParse::ProcessGpsInfo( if (ByteCount > 4) { - unsigned OffsetVal = (unsigned)Get32(DirEntry+8); + unsigned OffsetVal = (unsigned)Get32(DirEntry+8, m_MotorolaOrder); // If its bigger than 4 bytes, the dir entry contains an offset. if (OffsetVal+ByteCount > ExifLength) { @@ -878,7 +878,7 @@ void CExifParse::ProcessGpsInfo( case TAG_GPS_ALT: { char temp[18]; - sprintf(temp,"%dm", Get32(ValuePtr)); + sprintf(temp,"%dm", Get32(ValuePtr, m_MotorolaOrder)); strcat(m_ExifInfo->GpsAlt, temp); } break; |