Fixed another parser glitch
authorArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:52:55 +0000 (16:52 +0000)
committerArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 16:52:55 +0000 (16:52 +0000)
Author: jgg
Date: 1999-02-22 03:30:06 GMT
Fixed another parser glitch

apt-pkg/deb/debrecords.cc
apt-pkg/deb/debrecords.h
apt-pkg/pkgrecords.cc
apt-pkg/tagfile.cc

index e06533e..b3f91a8 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: debrecords.cc,v 1.4 1999/01/27 02:48:53 jgg Exp $
+// $Id: debrecords.cc,v 1.5 1999/02/22 03:30:06 jgg Exp $
 /* ######################################################################
    
    Debian Package Records - Parser for debian package records
@@ -18,7 +18,8 @@
 // RecordParser::debRecordParser - Constructor                         /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-debRecordParser::debRecordParser(FileFd &File) : Tags(File,4*1024)
+debRecordParser::debRecordParser(FileFd &File,pkgCache &Cache) : 
+                   Tags(File,Cache.Head().MaxVerFileSize + 20)
 {
 }
                                                                        /*}}}*/
index 68fe0f6..0c20449 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: debrecords.h,v 1.3 1998/11/13 04:23:38 jgg Exp $
+// $Id: debrecords.h,v 1.4 1999/02/22 03:30:06 jgg Exp $
 /* ######################################################################
    
    Debian Package Records - Parser for debian package records
@@ -44,7 +44,7 @@ class debRecordParser : public pkgRecords::Parser
    virtual string ShortDesc();
    virtual string LongDesc();
    
-   debRecordParser(FileFd &File);
+   debRecordParser(FileFd &File,pkgCache &Cache);
 };
 
 
index 5d982ca..5d112a5 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: pkgrecords.cc,v 1.4 1998/11/13 04:23:34 jgg Exp $
+// $Id: pkgrecords.cc,v 1.5 1999/02/22 03:30:06 jgg Exp $
 /* ######################################################################
    
    Package Records - Allows access to complete package description records
@@ -40,7 +40,7 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), Files(0)
         return;
       
       // Create the parser
-      Files[I->ID].Parse = new debRecordParser(*Files[I->ID].File);
+      Files[I->ID].Parse = new debRecordParser(*Files[I->ID].File,Cache);
       if (_error->PendingError() == true)
         return;
    }   
index 5d45b59..53e1e5e 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: tagfile.cc,v 1.23 1999/02/21 08:38:53 jgg Exp $
+// $Id: tagfile.cc,v 1.24 1999/02/22 03:30:06 jgg Exp $
 /* ######################################################################
 
    Fast scanner for RFC-822 type header information
@@ -127,8 +127,11 @@ bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long Offset)
       return false;
    
    if (Tag.Scan(Start,End - Start) == false)
+   {
+      cout << string(Start,End) << endl;
       return _error->Error("Unable to parse package file %s (2)",Fd.Name().c_str());
-  
+   }
+   
    return true;
 }
                                                                        /*}}}*/
@@ -212,9 +215,12 @@ bool pkgTagSection::Find(const char *Tag,const char *&Start,
       // Strip off the gunk from the start end
       Start = C;
       End = Section + Indexes[I+1];
+      if (Start >= End)
+        return _error->Error("Internal parsing error");
+      
       for (; (isspace(*Start) != 0 || *Start == ':') && Start < End; Start++);
       for (; isspace(End[-1]) != 0 && End > Start; End--);
-
+      
       return true;
    }
    
@@ -286,5 +292,3 @@ bool pkgTagSection::FindFlag(const char *Tag,unsigned long &Flags,
    return true;
 }
                                                                        /*}}}*/
-
-