apt 0.7.14: runtime error: Method file has died unexpectedly

When the length of the tmpdir is longer than 400, there is an error
when run "apt-get update":

Method file has died unexpectedly!

This is because the "char S[1024]" is not enough for long URI, S[2048]
would be enough.

[YOCTO #2689]

(From OE-Core rev: 3ed08bd24cef39a85c528159a494e8f0dd001739)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang 2012-07-04 18:16:29 +08:00 committed by Richard Purdie
parent f06c1c3df0
commit 12c8d9d451
4 changed files with 78 additions and 2 deletions

View File

@ -0,0 +1,75 @@
Method file has died unexpectedly
"Method file has died unexpectedly!", this is because the "char S[1024]"
is not enough for the long the URI, "char S[2048]" would be enough.
It would be boring if we use malloc here since we can't know how much
memory is needed except strelen() every component of it. So similarly
use "char S[2048]" as it did before.
Upstream-Status: Pending
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
apt-pkg/acquire-method.cc | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc
--- a/apt-pkg/acquire-method.cc
+++ b/apt-pkg/acquire-method.cc
@@ -95,7 +95,7 @@ void pkgAcqMethod::Fail(string Err,bool Transient)
*I = ' ';
}
- char S[1024];
+ char S[2048];
if (Queue != 0)
{
snprintf(S,sizeof(S)-50,"400 URI Failure\nURI: %s\n"
@@ -132,7 +132,7 @@ void pkgAcqMethod::URIStart(FetchResult &Res)
if (Queue == 0)
abort();
- char S[1024] = "";
+ char S[2048] = "";
char *End = S;
End += snprintf(S,sizeof(S),"200 URI Start\nURI: %s\n",Queue->Uri.c_str());
@@ -160,7 +160,7 @@ void pkgAcqMethod::URIDone(FetchResult &Res, FetchResult *Alt)
if (Queue == 0)
abort();
- char S[1024] = "";
+ char S[2048] = "";
char *End = S;
End += snprintf(S,sizeof(S),"201 URI Done\nURI: %s\n",Queue->Uri.c_str());
@@ -242,7 +242,7 @@ void pkgAcqMethod::URIDone(FetchResult &Res, FetchResult *Alt)
to be ackd */
bool pkgAcqMethod::MediaFail(string Required,string Drive)
{
- char S[1024];
+ char S[2048];
snprintf(S,sizeof(S),"403 Media Failure\nMedia: %s\nDrive: %s\n\n",
Required.c_str(),Drive.c_str());
@@ -411,7 +411,7 @@ void pkgAcqMethod::Log(const char *Format,...)
va_start(args,Format);
// sprintf the description
- char S[1024];
+ char S[2048];
unsigned int Len = snprintf(S,sizeof(S)-4,"101 Log\nURI: %s\n"
"Message: ",CurrentURI.c_str());
@@ -435,7 +435,7 @@ void pkgAcqMethod::Status(const char *Format,...)
va_start(args,Format);
// sprintf the description
- char S[1024];
+ char S[2048];
unsigned int Len = snprintf(S,sizeof(S)-4,"102 Status\nURI: %s\n"
"Message: ",CurrentURI.c_str());
--
1.7.10.4

View File

@ -1,6 +1,6 @@
require apt-native.inc
PR = "r9"
PR = "r10"
SRC_URI += "file://nodoc.patch \
file://noconfigure.patch \

View File

@ -9,6 +9,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/apt_${PV}.tar.gz \
file://makerace.patch \
file://remove-redeclaration.patch \
file://truncate-filename.patch \
file://allocate-larger-memory.patch \
"
inherit autotools gettext

View File

@ -3,7 +3,7 @@ RDEPENDS_${PN} = "dpkg"
LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=0636e73ff0215e8d672dc4c32c317bb3"
require apt.inc
PR = "r14"
PR = "r15"
SRC_URI += "file://nodoc.patch \
file://includes-fix.patch "