summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog3
-rw-r--r--ftparchive/cachedb.cc13
2 files changed, 9 insertions, 7 deletions
diff --git a/debian/changelog b/debian/changelog
index 1febfe495..1cafdaa90 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,9 @@ apt (0.6.45) unstable; urgency=low
* apt-pkg/contrib/sha256.cc:
- fixed the sha256 generation (closes: #378183)
+ * ftparchive/cachedb.cc:
+ - applied patch from ajt to fix Clean() function
+ (closes: #379576)
--
diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc
index 0e6078642..8a4ca0236 100644
--- a/ftparchive/cachedb.cc
+++ b/ftparchive/cachedb.cc
@@ -453,15 +453,14 @@ bool CacheDB::Clean()
memset(&Data,0,sizeof(Data));
while ((errno = Cursor->c_get(Cursor,&Key,&Data,DB_NEXT)) == 0)
{
- const char *Colon = (char *)Key.data;
- for (; Colon != (char *)Key.data+Key.size && *Colon != ':'; Colon++);
- if ((char *)Key.data+Key.size - Colon > 2)
+ const char *Colon = (char*)memrchr(Key.data, ':', Key.size);
+ if (Colon)
{
- if (stringcmp((char *)Key.data,Colon,"st") == 0 ||
- stringcmp((char *)Key.data,Colon,"cn") == 0 ||
- stringcmp((char *)Key.data,Colon,"cl") == 0)
+ if (stringcmp(Colon + 1, (char *)Key.data+Key.size,"st") == 0 ||
+ stringcmp(Colon + 1, (char *)Key.data+Key.size,"cl") == 0 ||
+ stringcmp(Colon + 1, (char *)Key.data+Key.size,"cn") == 0)
{
- if (FileExists(string(Colon+1,(const char *)Key.data+Key.size)) == true)
+ if (FileExists(string((const char *)Key.data,Colon)) == true)
continue;
}
}