Przeglądaj źródła

dselect: Do not loop endlessly with very long package descriptions

Closes: #179320, #342495
John Zaitseff 18 lat temu
rodzic
commit
1f5782739a
3 zmienionych plików z 13 dodań i 0 usunięć
  1. 5 0
      ChangeLog
  2. 3 0
      debian/changelog
  3. 5 0
      dselect/baselist.cc

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2008-01-01  John Zaitseff  <J.Zaitseff@zap.org.au>
+
+	* dselect/baselist.cc (baselist::wordwrapinfo): Stop processing when
+	exceeding infopad line limit, and add a warning message.
+
 2008-01-01  Sven Rudolph  <sr1@loom.sax.de>
 
 	* dselect/baselist.cc (baselist::startdisplay): Set helpscreen_attr

+ 3 - 0
debian/changelog

@@ -15,6 +15,9 @@ dpkg (1.14.15) UNRELEASED; urgency=low
   * Do not disaplay garbage in dselect on monochrome terminals, by setting
     a missing ncurses character attribute. Closes: #155741, #157093
     Thanks to Sven Rudolph.
+  * Do not loop endlessly in dselect with very long package descriptions.
+    Closes: #179320, #342495
+    Thanks to John Zaitseff.
 
   [ Updated dpkg translations ]
   * Norwegian Bokmål (Hans Fredrik Nordhaug). Closes: #457918

+ 5 - 0
dselect/baselist.cc

@@ -365,6 +365,11 @@ void baselist::wordwrapinfo(int offset, const char *m) {
       wrapping= 1;
     }
     if (!p) break;
+    if (getcury(infopad) == (MAX_DISPLAY_INFO - 1)) {
+      waddstr(infopad,
+              "[The package description is too long and has been truncated...]");
+      break;
+    }
     m= ++p;
   }
   if (debug) fprintf(debug,"baselist[%p]::wordwrapinfo() done\n",this);