Просмотр исходного кода

* apt-pkg/contrib/cmdline.cc:
- fix segfault in SaveInConfig caused by writing over char[] sizes

David Kalnischkies лет назад: 16
Родитель
Сommit
093e9f5d30
2 измененных файлов с 5 добавлено и 3 удалено
  1. 2 2
      apt-pkg/contrib/cmndline.cc
  2. 3 1
      debian/changelog

+ 2 - 2
apt-pkg/contrib/cmndline.cc

@@ -360,11 +360,11 @@ bool CommandLine::DispatchArg(Dispatch *Map,bool NoMatch)
    than nothing after all. */
 void CommandLine::SaveInConfig(unsigned int const &argc, char const * const * const argv)
 {
-   char cmdline[300];
+   char cmdline[100 + argc * 50];
    unsigned int length = 0;
    bool lastWasOption = false;
    bool closeQuote = false;
-   for (unsigned int i = 0; i < argc; ++i, ++length)
+   for (unsigned int i = 0; i < argc && length < sizeof(cmdline); ++i, ++length)
    {
       for (unsigned int j = 0; argv[i][j] != '\0' && length < sizeof(cmdline)-1; ++j, ++length)
       {

+ 3 - 1
debian/changelog

@@ -26,8 +26,10 @@ apt (0.7.26~exp6) UNRELEASED; urgency=low
     - add a simple wrapper around std::set for packages with it
     - move regex magic from apt-get to new FromRegEx method
     - move cmdline parsing from apt-cache to new FromCommandLine method
+  * apt-pkg/contrib/cmdline.cc:
+    - fix segfault in SaveInConfig caused by writing over char[] sizes
 
- -- David Kalnischkies <kalnischkies@gmail.com>  Sat, 29 May 2010 19:09:05 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com>  Mon, 31 May 2010 17:21:00 +0200
 
 apt (0.7.26~exp5) experimental; urgency=low