X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/ea50fdfe2fc21757412baf448b2d41b3ce34b626..0f2def05fc907a1349a0800dd0f4f7c3a0b99fca:/methods/gpgv.cc diff --git a/methods/gpgv.cc b/methods/gpgv.cc index 3ad3e8d84..25ba0d063 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -1,9 +1,11 @@ +#include + #include #include #include #include #include -#include +#include #include #include @@ -12,9 +14,13 @@ #include #include #include - #include +#include + +using std::string; +using std::vector; + #define GNUPGPREFIX "[GNUPG:]" #define GNUPGBADSIG "[GNUPG:] BADSIG" #define GNUPGNOPUBKEY "[GNUPG:] NO_PUBKEY" @@ -92,8 +98,16 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, // Read a line. Sigh. while ((c = getc(pipein)) != EOF && c != '\n') { - if (bufferoff == buffersize) - buffer = (char *) realloc(buffer, buffersize *= 2); + if (bufferoff == buffersize) + { + char* newBuffer = (char *) realloc(buffer, buffersize *= 2); + if (newBuffer == NULL) + { + free(buffer); + return "Couldn't allocate a buffer big enough for reading"; + } + buffer = newBuffer; + } *(buffer+bufferoff) = c; bufferoff++; }