]> git.saurik.com Git - apt.git/commitdiff
* Increase length of line buffer in ReadConfigFile to 1...
authorArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 17:06:30 +0000 (17:06 +0000)
committerArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 17:06:30 +0000 (17:06 +0000)
Author: mdz
Date: 2004-04-30 04:00:15 GMT
* Increase length of line buffer in ReadConfigFile to 1024 chars;
detect if a line is longer than that and error out
(Closes: #244835)

apt-pkg/contrib/configuration.cc
debian/changelog

index e6ea2a0efd6b8f037028e020f141c2d072f1b05a..740aa81373f8126d42d3e1f05fc1e374df28ecf4 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: configuration.cc,v 1.27 2003/07/26 00:27:36 mdz Exp $
+// $Id: configuration.cc,v 1.28 2004/04/30 04:00:15 mdz Exp $
 /* ######################################################################
 
    Configuration Class
 /* ######################################################################
 
    Configuration Class
@@ -452,7 +452,7 @@ bool ReadConfigFile(Configuration &Conf,string FName,bool AsSectional,
    if (!F != 0)
       return _error->Errno("ifstream::ifstream",_("Opening configuration file %s"),FName.c_str());
    
    if (!F != 0)
       return _error->Errno("ifstream::ifstream",_("Opening configuration file %s"),FName.c_str());
    
-   char Buffer[300];
+   char Buffer[1024];
    string LineBuffer;
    string Stack[100];
    unsigned int StackPos = 0;
    string LineBuffer;
    string Stack[100];
    unsigned int StackPos = 0;
@@ -466,6 +466,10 @@ bool ReadConfigFile(Configuration &Conf,string FName,bool AsSectional,
    {
       F.getline(Buffer,sizeof(Buffer));
       CurLine++;
    {
       F.getline(Buffer,sizeof(Buffer));
       CurLine++;
+      // This should be made to work instead, but this is better than looping
+      if (F.fail() && !F.eof())
+         return _error->Error(_("Line %d too long (max %d)"), CurLine, sizeof(Buffer));
+
       _strtabexpand(Buffer,sizeof(Buffer));
       _strstrip(Buffer);
 
       _strtabexpand(Buffer,sizeof(Buffer));
       _strstrip(Buffer);
 
index f67395bd21672b4396a60451ef9bd05ba1cc3dc3..bd158a83415718239e1ff8a555858d8ca2d61fcf 100644 (file)
@@ -28,8 +28,11 @@ apt (0.5.25) unstable; urgency=low
     (Closes: #246550)
   * Support DEB_BUILD_OPTIONS=noopt in debian/rules
     (Closes: #244293)
     (Closes: #246550)
   * Support DEB_BUILD_OPTIONS=noopt in debian/rules
     (Closes: #244293)
+  * Increase length of line buffer in ReadConfigFile to 1024 chars;
+    detect if a line is longer than that and error out
+    (Closes: #244835)
 
 
- -- Matt Zimmerman <mdz@debian.org>  Thu, 29 Apr 2004 20:46:35 -0700
+ -- Matt Zimmerman <mdz@debian.org>  Thu, 29 Apr 2004 21:00:02 -0700
 
 apt (0.5.24) unstable; urgency=low
 
 
 apt (0.5.24) unstable; urgency=low