diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2011-10-05 18:43:00 +0200 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2011-10-05 18:43:00 +0200 |
commit | 0fffbc8ce4cb6357f59db63db5571f46a668a66b (patch) | |
tree | 2d691473c05b86c9fd78229fd9edbe4e2ee6ee3a | |
parent | 39fb1e241ebb76c7e51c8d8f2f76ce5f1e680859 (diff) | |
parent | 7be8c02360bdb9bd7f59b087da874f88af2a7206 (diff) |
merge with current debian apt/experimental
-rw-r--r-- | apt-pkg/acquire-item.h | 8 | ||||
-rw-r--r-- | apt-pkg/contrib/configuration.cc | 9 | ||||
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 32 | ||||
-rw-r--r-- | apt-pkg/deb/debmetaindex.cc | 2 | ||||
-rw-r--r-- | debian/changelog | 21 | ||||
-rw-r--r-- | ftparchive/cachedb.cc | 14 | ||||
-rw-r--r-- | methods/https.cc | 5 |
7 files changed, 66 insertions, 25 deletions
diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 24f848f27..27b8e887b 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -697,6 +697,14 @@ class SubIndexTarget : public IndexTarget } }; /*}}}*/ +/** \brief Information about an subindex index file. */ /*{{{*/ +class OptionalSubIndexTarget : public OptionalIndexTarget +{ + virtual bool IsSubIndex() const { + return true; + } +}; + /*}}}*/ /** \brief An acquire item that downloads the detached signature {{{ * of a meta-index (Release) file, then queues up the release diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc index 0f7b37ee9..0949ec223 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -873,10 +873,10 @@ Configuration::MatchAgainstConfig::MatchAgainstConfig(char const * Config) { regfree(p); delete p; - clearPatterns(); - _error->Warning("Regex compilation error for '%s' in configuration option '%s'", - s->c_str(), Config); - return; + _error->Warning("Invalid regular expression '%s' in configuration " + "option '%s' will be ignored.", + s->c_str(), Config); + continue; } } if (strings.size() == 0) @@ -897,6 +897,7 @@ void Configuration::MatchAgainstConfig::clearPatterns() regfree(*p); delete *p; } + patterns.clear(); } /*}}}*/ // MatchAgainstConfig::Match - returns true if a pattern matches /*{{{*/ diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 3652f9e8b..f6fb2789c 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -821,16 +821,16 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, ++lineEnd; // which datastorage need to be updated - map_ptrloc* writeTo = NULL; + enum { Suite, Component, Version, Origin, Codename, Label, None } writeTo = None; if (buffer[0] == ' ') ; - #define APT_PARSER_WRITETO(X, Y) else if (strncmp(Y, buffer, len) == 0) writeTo = &X; - APT_PARSER_WRITETO(FileI->Archive, "Suite") - APT_PARSER_WRITETO(FileI->Component, "Component") - APT_PARSER_WRITETO(FileI->Version, "Version") - APT_PARSER_WRITETO(FileI->Origin, "Origin") - APT_PARSER_WRITETO(FileI->Codename, "Codename") - APT_PARSER_WRITETO(FileI->Label, "Label") + #define APT_PARSER_WRITETO(X) else if (strncmp(#X, buffer, len) == 0) writeTo = X; + APT_PARSER_WRITETO(Suite) + APT_PARSER_WRITETO(Component) + APT_PARSER_WRITETO(Version) + APT_PARSER_WRITETO(Origin) + APT_PARSER_WRITETO(Codename) + APT_PARSER_WRITETO(Label) #undef APT_PARSER_WRITETO #define APT_PARSER_FLAGIT(X) else if (strncmp(#X, buffer, len) == 0) \ pkgTagSection::FindFlag(FileI->Flags, pkgCache::Flag:: X, dataStart, lineEnd); @@ -840,19 +840,19 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, // load all data from the line and save it string data; - if (writeTo != NULL) + if (writeTo != None) data.append(dataStart, dataEnd); if (sizeof(buffer) - 1 == (dataEnd - buffer)) { while (fgets(buffer, sizeof(buffer), release) != NULL) { - if (writeTo != NULL) + if (writeTo != None) data.append(buffer); if (strlen(buffer) != sizeof(buffer) - 1) break; } } - if (writeTo != NULL) + if (writeTo != None) { // remove spaces and stuff from the end of the data line for (std::string::reverse_iterator s = data.rbegin(); @@ -862,7 +862,15 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, break; *s = '\0'; } - *writeTo = WriteUniqString(data); + switch (writeTo) { + case Suite: FileI->Archive = WriteUniqString(data); break; + case Component: FileI->Component = WriteUniqString(data); break; + case Version: FileI->Version = WriteUniqString(data); break; + case Origin: FileI->Origin = WriteUniqString(data); break; + case Codename: FileI->Codename = WriteUniqString(data); break; + case Label: FileI->Label = WriteUniqString(data); break; + case None: break; + } } } fclose(release); diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index 0d07725eb..c509c29c7 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -225,7 +225,7 @@ vector <struct IndexTarget *>* debReleaseIndex::ComputeIndexTargets() const { } else { for (std::set<std::string>::const_iterator s = sections.begin(); s != sections.end(); ++s) { - IndexTarget * Target = new OptionalIndexTarget(); + IndexTarget * Target = new OptionalSubIndexTarget(); Target->ShortDesc = "TranslationIndex"; Target->MetaKey = TranslationIndexURISuffix("Index", *s); Target->URI = TranslationIndexURI("Index", *s); diff --git a/debian/changelog b/debian/changelog index 0e7ffb80f..f32f7a282 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -apt (0.8.16~exp7) experimental; urgency=low +apt (0.8.16~exp7) UNRELEASEDexperimental; urgency=low [ David Kalnischkies ] * do not pollute namespace in the headers with using (Closes: #500198) @@ -15,8 +15,25 @@ apt (0.8.16~exp7) experimental; urgency=low - if a package is garbage, don't try to save it with FixByInstall * apt-pkg/deb/debsrcrecords.cc: - remove the limit of 400 Binaries for a source package (Closes: #622110) + * apt-pkg/deb/deblistparser.cc: + - fix crash when the dynamic mmap needs to be grown in + LoadReleaseInfo (LP: #854090) + + [ Michael Vogt ] + * apt-pkg/contrib/configuration.cc: + - fix double delete (LP: #848907) + - ignore only the invalid regexp instead of all options + * apt-pkg/acquire-item.h, apt-pkg/deb/debmetaindex.cc: + - fix fetching language information by adding OptionalSubIndexTarget + * methods/https.cc: + - cleanup broken downloads properly + + [ Colin Watson ] + * ftparchive/cachedb.cc: + - fix buffersize in bytes2hex + - -- David Kalnischkies <kalnischkies@gmail.com> Wed, 21 Sep 2011 19:29:55 +0200 + -- David Kalnischkies <kalnischkies@gmail.com> Wed, 05 Oct 2011 18:40:57 +0200 apt (0.8.16~exp6) experimental; urgency=low diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc index c4db88811..f0bfa2a6d 100644 --- a/ftparchive/cachedb.cc +++ b/ftparchive/cachedb.cc @@ -300,11 +300,15 @@ bool CacheDB::LoadContents(bool const &GenOnly) /*}}}*/ static std::string bytes2hex(uint8_t *bytes, size_t length) { - char space[65]; - if (length * 2 > sizeof(space) - 1) length = (sizeof(space) - 1) / 2; - for (size_t i = 0; i < length; i++) - snprintf(&space[i*2], 3, "%02x", bytes[i]); - return std::string(space); + char buf[3]; + std::string space; + + space.reserve(length*2 + 1); + for (size_t i = 0; i < length; i++) { + snprintf(buf, sizeof(buf), "%02x", bytes[i]); + space.append(buf); + } + return space; } static inline unsigned char xdig2num(char const &dig) { diff --git a/methods/https.cc b/methods/https.cc index e70206dfb..335699907 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -272,14 +272,17 @@ bool HttpsMethod::Fetch(FetchItem *Itm) long curl_servdate; curl_easy_getinfo(curl, CURLINFO_FILETIME, &curl_servdate); + File->Close(); + // cleanup if(success != 0) { _error->Error("%s", curl_errorstr); + // unlink, no need keep 401/404 page content in partial/ + unlink(File->Name().c_str()); Fail(); return true; } - File->Close(); // Timestamp struct utimbuf UBuf; |