X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/d77559acad5da864e764aef8aed08046e4d38ed4..c307a4f0aa29c9c52a0e028524d21b448a53d09b:/apt-inst/contrib/arfile.cc?ds=sidebyside diff --git a/apt-inst/contrib/arfile.cc b/apt-inst/contrib/arfile.cc index eb708271e..2dee1a40d 100644 --- a/apt-inst/contrib/arfile.cc +++ b/apt-inst/contrib/arfile.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: arfile.cc,v 1.7 2004/01/07 20:39:37 mdz Exp $ +// $Id: arfile.cc,v 1.6.2.1 2004/01/16 18:58:50 mdz Exp $ /* ###################################################################### AR File - Handle an 'AR' archive @@ -14,16 +14,17 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#ifdef __GNUG__ -#pragma implementation "apt-pkg/arfile.h" -#endif +#include + #include #include +#include #include #include - /*}}}*/ + #include + /*}}}*/ struct ARArchive::MemberHeader { @@ -90,7 +91,7 @@ bool ARArchive::LoadHeaders() StrToNum(Head.Size,Memb->Size,sizeof(Head.Size)) == false) { delete Memb; - return _error->Error(_("Invalid archive member header")); + return _error->Error(_("Invalid archive member header %s"), Head.Name); } // Check for an extra long name string @@ -99,7 +100,7 @@ bool ARArchive::LoadHeaders() char S[300]; unsigned long Len; if (StrToNum(Head.Name+3,Len,sizeof(Head.Size)-3) == false || - Len >= strlen(S)) + Len >= sizeof(S)) { delete Memb; return _error->Error(_("Invalid archive member header")); @@ -114,8 +115,8 @@ bool ARArchive::LoadHeaders() else { unsigned int I = sizeof(Head.Name) - 1; - for (; Head.Name[I] == ' '; I--); - Memb->Name = string(Head.Name,I+1); + for (; Head.Name[I] == ' ' || Head.Name[I] == '/'; I--); + Memb->Name = std::string(Head.Name,I+1); } // Account for the AR header alignment