On Wed, Mar 29, 2006 at 06:53:18PM +0400, Stanislav Ievlev wrote: > У меня так часто валится apt-pipe что я решил сделать профилактический > проход по apt'у - понятное дело отфильтровывая его многочисленные > неисправимые преимущества.
Ладно, раз уж пошла такая пьянка...
Сижу отсматриваю изменения между apt-0.5.15cnc6 и apt-0.5.15cnc7.
Из _добавлений_ в новой версии, по которым сразу виден apt-rpm:
=======
if (I->Owner->Status == pkgAcquire::Item::StatIdle &&
strncmp(I->URI.c_str(), Workers->Config->PreferredURI.c_str(),
Workers->Config->PreferredURI.length()) == 0)
Перевожу: для того, чтобы определить, является ли одна C++-строка
префиксом другой, производится конвертация в C для того, чтобы вызвать
strncmp.
=======
if ((Flags & HasPreferredURI) == HasPreferredURI)
strcat(End,"Has-Preferred-URI: true\n");
End - это буфер на стеке классического apt-ового размера (300 символов),
а добавленный strcat не первый и не последний направлен в этот буфер.
=======
case 679:
{
char S[1024];
snprintf(S,sizeof(S),"179 Preferred URI\nPreferredURI: %s\n\n",
PreferredURI().c_str());
if (write(STDOUT_FILENO,S,strlen(S)) != (signed)strlen(S))
exit(100);
break;
}
Разумеется, PreferredURI() это урл произвольной длины.
=======
else if (Opts->Value == "-v") {
rpmIncreaseVerbosity();
} else if (Opts->Value == "-vv") {
rpmIncreaseVerbosity();
rpmIncreaseVerbosity();
} else if (Opts->Value == "-vvv") {
rpmIncreaseVerbosity();
rpmIncreaseVerbosity();
rpmIncreaseVerbosity();
}
Просто красота.
=======
// CNC:2004-09-23 - Try to handle unknown file items.
unsigned int Length = strlen(*I);
char S[300];
if (Length >= sizeof(S))
continue;
strcpy(S,*I);
if (S[0] == '/')
{
Попробуем обработать файл... если его имя не слишком длинное.
=======
Так, теперь смотрю что изменилось между apt-0.5.15cnc7 и apt-0.5.15org2
=======
- char S[1024] = "";
- char *End = S;
-
- End += snprintf(S,sizeof(S),"200 URI Start\nURI: %s\n",Queue->Uri.c_str());
+
+ ostringstream s;
+
+ s << "200 URI Start\nURI: " << Queue->Uri << "\n";
if (Res.Size != 0)
- End += snprintf(End,sizeof(S)-4 - (End - S),"Size: %lu\n",Res.Size);
+ s << "Size: " << Res.Size << "\n";
Не может быть. Не верю своим глазам.
=======
- char S[1024] = "";
- char *End = S;
-
- End += snprintf(S,sizeof(S),"201 URI Done\nURI: %s\n",Queue->Uri.c_str());
+ ostringstream s;
+ s << "201 URI Done\nURI: " << Queue->Uri << "\n";
+
if (Res.Filename.empty() == false)
- End += snprintf(End,sizeof(S)-50 - (End - S),"Filename:
%s\n",Res.Filename.c_str());
+ s << "Filename: " << Res.Filename << "\n";
Продолжаю не верить.
=======
+bool pkgAcqMethod::NeedAuth(string Description,string &User,string &Pass)
+{
+ char S[1024];
+ snprintf(S,sizeof(S),"404 Authenticate\nDescription: %s\n\n",
+ Description.c_str());
+
+ if (write(STDOUT_FILENO,S,strlen(S)) != (signed)strlen(S))
+ exit(100);
Ну вот, снова знакомая картина. Чудес не бывает.
В общем подозрительных изменений, которые могут сломать обратную
совместимость, оказалось совсем немного.
--
ldv
pgpI3JVJ1p7ho.pgp
Description: PGP signature
_______________________________________________ Devel-conf mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/devel-conf
