diff options
Diffstat (limited to 'apt-pkg/contrib')
-rw-r--r-- | apt-pkg/contrib/gpgv.cc | 23 | ||||
-rw-r--r-- | apt-pkg/contrib/gpgv.h | 3 |
2 files changed, 12 insertions, 14 deletions
diff --git a/apt-pkg/contrib/gpgv.cc b/apt-pkg/contrib/gpgv.cc index 54cc4c6d0..ba059dd87 100644 --- a/apt-pkg/contrib/gpgv.cc +++ b/apt-pkg/contrib/gpgv.cc @@ -298,20 +298,21 @@ bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile, SignatureFile->Write("\n", 1); } } - else if (found_message_end == false) + else if (found_message_end == false) // we are in the message block { - // we are in the message block + // we don't have any fields which need dash-escaped, + // but implementations are free to encode all lines … + char const * dashfree = buf; + if (strncmp(dashfree, "- ", 2) == 0) + dashfree += 2; if(first_line == true) // first line does not need a newline - { - if (ContentFile != NULL) - ContentFile->Write(buf, strlen(buf)); first_line = false; - } else if (ContentFile != NULL) - { ContentFile->Write("\n", 1); - ContentFile->Write(buf, strlen(buf)); - } + else + continue; + if (ContentFile != NULL) + ContentFile->Write(dashfree, strlen(dashfree)); } } else if (found_signature == true) @@ -333,10 +334,10 @@ bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile, // if we haven't found any of them, this an unsigned file, // so don't generate an error, but splitting was unsuccessful none-the-less - if (found_message_start == false && found_message_end == false) + if (first_line == true && found_message_start == false && found_message_end == false) return false; // otherwise one missing indicates a syntax error - else if (found_message_start == false || found_message_end == false) + else if (first_line == false || found_message_start == false || found_message_end == false) return _error->Error("Splitting of file %s failed as it doesn't contain all expected parts", InFile.c_str()); return true; diff --git a/apt-pkg/contrib/gpgv.h b/apt-pkg/contrib/gpgv.h index 1f877fc2d..08b10a97a 100644 --- a/apt-pkg/contrib/gpgv.h +++ b/apt-pkg/contrib/gpgv.h @@ -51,9 +51,6 @@ inline void ExecGPGV(std::string const &File, std::string const &FileSig, * If a FileFd pointers is NULL it will not be used and the content * which would have been written to it is silently discarded. * - * The code doesn't support dash-encoded lines as these are not - * expected to be present in files we have to deal with. - * * The content of the split files is undefined if the splitting was * unsuccessful. * |