]> git.saurik.com Git - apt.git/commitdiff
Fix ar and tar code to be LFS-safe
authorGuillem Jover <guillem@debian.org>
Wed, 2 Jul 2014 01:10:21 +0000 (03:10 +0200)
committerMichael Vogt <mvo@debian.org>
Tue, 8 Jul 2014 08:00:15 +0000 (10:00 +0200)
This is an ABI break.

Closes: #742882
apt-inst/contrib/arfile.h
apt-inst/contrib/extracttar.cc
apt-inst/contrib/extracttar.h
apt-inst/deb/debfile.cc
apt-inst/deb/debfile.h
apt-inst/dirstream.h
cmdline/apt-extracttemplates.cc
cmdline/apt-extracttemplates.h
debian/libapt-inst1.5.symbols

index 0f62a34a06bd41025bb88c9c1013c7fcccc3fa3e..5aa38aedcdefe1e58a7597b8bb115879ace1dca7 100644 (file)
@@ -61,7 +61,7 @@ struct ARArchive::Member
    unsigned long long Size;
    
    // Location of the data.
-   unsigned long Start;
+   unsigned long long Start;
    Member *Next;
    
    Member() : Start(0), Next(0) {};
index 0ba3f05215d0190ebced2195a15269ced5939f26..2c86d0d01053c143d6dd76ac3683b94d659edd86 100644 (file)
@@ -60,9 +60,8 @@ struct ExtractTar::TarHeader
 // ExtractTar::ExtractTar - Constructor                                        /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-ExtractTar::ExtractTar(FileFd &Fd,unsigned long Max,string DecompressionProgram) : File(Fd), 
-                         MaxInSize(Max), DecompressProg(DecompressionProgram)
-
+ExtractTar::ExtractTar(FileFd &Fd,unsigned long long Max,string DecompressionProgram)
+       : File(Fd), MaxInSize(Max), DecompressProg(DecompressionProgram)
 {
    GZPid = -1;
    Eof = false;
@@ -267,7 +266,7 @@ bool ExtractTar::Go(pkgDirStream &Stream)
 
         case GNU_LongLink:
         {
-           unsigned long Length = Itm.Size;
+           unsigned long long Length = Itm.Size;
            unsigned char Block[512];
            while (Length > 0)
            {
@@ -286,7 +285,7 @@ bool ExtractTar::Go(pkgDirStream &Stream)
         
         case GNU_LongName:
         {
-           unsigned long Length = Itm.Size;
+           unsigned long long Length = Itm.Size;
            unsigned char Block[512];
            while (Length > 0)
            {
@@ -315,11 +314,11 @@ bool ExtractTar::Go(pkgDirStream &Stream)
            return false;
       
       // Copy the file over the FD
-      unsigned long Size = Itm.Size;
+      unsigned long long Size = Itm.Size;
       while (Size != 0)
       {
         unsigned char Junk[32*1024];
-        unsigned long Read = min(Size,(unsigned long)sizeof(Junk));
+        unsigned long Read = min(Size, (unsigned long long)sizeof(Junk));
         if (InFd.Read(Junk,((Read+511)/512)*512) == false)
            return false;
         
index 4b29df3141ae71dfbd54c08fae1b5f381f17a899..472e018f4d3c18eb30a98c493ee2d610dd1e69c6 100644 (file)
@@ -39,7 +39,7 @@ class ExtractTar
                   GNU_LongLink = 'K',GNU_LongName = 'L'};
 
    FileFd &File;
-   unsigned long MaxInSize;
+   unsigned long long MaxInSize;
    int GZPid;
    FileFd InFd;
    bool Eof;
@@ -53,7 +53,7 @@ class ExtractTar
 
    bool Go(pkgDirStream &Stream);
    
-   ExtractTar(FileFd &Fd,unsigned long Max,std::string DecompressionProgram);
+   ExtractTar(FileFd &Fd,unsigned long long Max,std::string DecompressionProgram);
    virtual ~ExtractTar();
 };
 
index a63cb6716264a2131a20d18953b3796d3889ba9e..4853a13c7ebd3c404a467da40b75ba8c0a11757f 100644 (file)
@@ -203,7 +203,7 @@ bool debDebFile::MemControlExtract::DoItem(Item &Itm,int &Fd)
 /* Just memcopy the block from the tar extractor and put it in the right
    place in the pre-allocated memory block. */
 bool debDebFile::MemControlExtract::Process(Item &/*Itm*/,const unsigned char *Data,
-                            unsigned long Size,unsigned long Pos)
+                            unsigned long long Size,unsigned long long Pos)
 {
    memcpy(Control + Pos, Data,Size);
    return true;
@@ -232,7 +232,7 @@ bool debDebFile::MemControlExtract::Read(debDebFile &Deb)
 // ---------------------------------------------------------------------
 /* The given memory block is loaded into the parser and parsed as a control
    record. */
-bool debDebFile::MemControlExtract::TakeControl(const void *Data,unsigned long Size)
+bool debDebFile::MemControlExtract::TakeControl(const void *Data,unsigned long long Size)
 {
    delete [] Control;
    Control = new char[Size+2];
index 880bcf6c59bb4b4a564d83cc95d6017ef6fcb883..b068efceccb45a050a5df7669133ac353509e906 100644 (file)
@@ -81,12 +81,12 @@ class debDebFile::MemControlExtract : public pkgDirStream
    // Members from DirStream
    virtual bool DoItem(Item &Itm,int &Fd);
    virtual bool Process(Item &Itm,const unsigned char *Data,
-                       unsigned long Size,unsigned long Pos);
+                       unsigned long long Size,unsigned long long Pos);
    
 
    // Helpers
    bool Read(debDebFile &Deb);
-   bool TakeControl(const void *Data,unsigned long Size);
+   bool TakeControl(const void *Data,unsigned long long Size);
       
    MemControlExtract() : IsControl(false), Control(0), Length(0), Member("control") {};
    MemControlExtract(std::string Member) : IsControl(false), Control(0), Length(0), Member(Member) {};
index 1be2688a11e637d1e06c203d66030c3a2d2450bd..571fe86a57b3f80c3dbd75434aecf284dbe7a777 100644 (file)
@@ -37,10 +37,10 @@ class pkgDirStream
                   Directory, FIFO} Type;
       char *Name;
       char *LinkTarget;
+      unsigned long long Size;
       unsigned long Mode;
       unsigned long UID;
       unsigned long GID;
-      unsigned long Size;
       unsigned long MTime;
       unsigned long Major;
       unsigned long Minor;
@@ -50,7 +50,7 @@ class pkgDirStream
    virtual bool Fail(Item &Itm,int Fd);
    virtual bool FinishedFile(Item &Itm,int Fd);
    virtual bool Process(Item &/*Itm*/,const unsigned char * /*Data*/,
-                       unsigned long /*Size*/,unsigned long /*Pos*/) {return true;};
+                       unsigned long long /*Size*/,unsigned long long /*Pos*/) {return true;};
       
    virtual ~pkgDirStream() {};   
 };
index 0d568106f3239c627fc9ae8da9cc1da62e24ba93..f95b9e5ba2eff3ec8943127a60f317541cec89d1 100644 (file)
@@ -140,7 +140,7 @@ bool DebFile::DoItem(Item &I, int &Fd)
 // ---------------------------------------------------------------------
 /* */
 bool DebFile::Process(Item &/*I*/, const unsigned char *data,
-               unsigned long size, unsigned long pos)
+               unsigned long long size, unsigned long long pos)
 {
        switch (Which)
        {
index 6d2870a02365cd48730a9cd237e7e39bf6a97022..829cdae755c39b5ca8eb5c1d6542c6f3589310e0 100644 (file)
@@ -28,7 +28,7 @@ public:
        ~DebFile();
        bool DoItem(Item &I, int &fd);
        bool Process(pkgDirStream::Item &I, const unsigned char *data, 
-               unsigned long size, unsigned long pos);
+               unsigned long long size, unsigned long long pos);
 
        bool Go();
        bool ParseInfo();
index 8ce707287165ac1d87b39b378fd0de4f90f17f1a..c5ab7f4ed4900982706609c0775e7c9157ff0685 100644 (file)
@@ -3,7 +3,7 @@ libapt-inst.so.1.5 libapt-inst1.5 #MINVER#
  (c++)"ExtractTar::Done(bool)@Base" 0.8.0
  (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0
  (c++)"ExtractTar::StartGzip()@Base" 0.8.0
- (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0
+ (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 1.0.5
  (c++)"ExtractTar::~ExtractTar()@Base" 0.8.0
  (c++)"debDebFile::GotoMember(char const*)@Base" 0.8.0
  (c++)"debDebFile::CheckMember(char const*)@Base" 0.8.0
@@ -11,10 +11,10 @@ libapt-inst.so.1.5 libapt-inst1.5 #MINVER#
  (c++)"debDebFile::ControlExtract::~ControlExtract()@Base" 0.8.0
  (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@Base" 0.9.15.4
  (c++)"debDebFile::ExtractArchive(pkgDirStream&)@Base" 0.8.0
- (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long)@Base" 0.8.0
+ (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@Base" 1.0.5
  (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@Base" 0.8.0
  (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0
- (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long, unsigned long)@Base" 0.8.0
+ (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@Base" 1.0.5
  (c++)"debDebFile::MemControlExtract::~MemControlExtract()@Base" 0.8.0
  (c++)"debDebFile::debDebFile(FileFd&)@Base" 0.8.0
  (c++)"pkgExtract::FinishedFile(pkgDirStream::Item&, int)@Base" 0.8.0
@@ -41,7 +41,7 @@ libapt-inst.so.1.5 libapt-inst1.5 #MINVER#
  (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@Base" 0.8.0
  (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@Base" 0.8.0
  (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0
- (c++)"pkgDirStream::Process(pkgDirStream::Item&, unsigned char const*, unsigned long, unsigned long)@Base" 0.8.0
+ (c++)"pkgDirStream::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@Base" 1.0.5
  (c++)"pkgDirStream::~pkgDirStream()@Base" 0.8.0
  (c++|optional)"pkgCache::DepIterator::operator++(int)@Base" 0.8.0
  (c++|optional)"pkgCache::DepIterator::operator++()@Base" 0.8.0