aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/openpgp/Makefile.am1
-rw-r--r--tests/openpgp/defs.scm7
-rwxr-xr-xtests/openpgp/issue2419.scm28
-rw-r--r--tests/openpgp/samplemsgs/issue2419.asc7
-rwxr-xr-xtests/openpgp/setup.scm8
5 files changed, 43 insertions, 8 deletions
diff --git a/tests/openpgp/Makefile.am b/tests/openpgp/Makefile.am
index f8932d646..718b4bc07 100644
--- a/tests/openpgp/Makefile.am
+++ b/tests/openpgp/Makefile.am
@@ -84,6 +84,7 @@ TESTS = setup.scm \
ssh.scm \
issue2015.scm \
issue2346.scm \
+ issue2419.scm \
finish.scm
diff --git a/tests/openpgp/defs.scm b/tests/openpgp/defs.scm
index 06bc0b828..9408cd5f4 100644
--- a/tests/openpgp/defs.scm
+++ b/tests/openpgp/defs.scm
@@ -133,6 +133,13 @@
(string-split
(call-popen `(,@GPG --with-colons ,@args) input) #\newline)))
+;; Dearmor a file.
+(define (dearmor source-name sink-name)
+ (pipe:do
+ (pipe:open source-name (logior O_RDONLY O_BINARY))
+ (pipe:spawn `(,@GPG --dearmor))
+ (pipe:write-to sink-name (logior O_WRONLY O_CREAT O_BINARY) #o600)))
+
(let ((verbose (string->number (getenv "verbose"))))
(if (number? verbose)
(*set-verbose!* verbose)))
diff --git a/tests/openpgp/issue2419.scm b/tests/openpgp/issue2419.scm
new file mode 100755
index 000000000..efc42a6ae
--- /dev/null
+++ b/tests/openpgp/issue2419.scm
@@ -0,0 +1,28 @@
+#!/usr/bin/env gpgscm
+
+;; Copyright (C) 2016 g10 Code GmbH
+;;
+;; This file is part of GnuPG.
+;;
+;; GnuPG is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GnuPG is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+(load (with-path "defs.scm"))
+
+(info "Checking iobuf_peek corner case (issue2419)...")
+(lettmp
+ (onebyte)
+ (dearmor (in-srcdir "samplemsgs/issue2419.asc") onebyte)
+ (catch (assert (string-contains? *error* "invalid packet"))
+ (call-popen `(,@GPG --list-packets ,onebyte) "")
+ (error "Expected an error but got none")))
diff --git a/tests/openpgp/samplemsgs/issue2419.asc b/tests/openpgp/samplemsgs/issue2419.asc
new file mode 100644
index 000000000..b73efedde
--- /dev/null
+++ b/tests/openpgp/samplemsgs/issue2419.asc
@@ -0,0 +1,7 @@
+-----BEGIN PGP ARMORED FILE-----
+Version: GnuPG v2
+Comment: Use "gpg --dearmor" for unpacking
+
+AA==
+=YWnT
+-----END PGP ARMORED FILE-----
diff --git a/tests/openpgp/setup.scm b/tests/openpgp/setup.scm
index 9ad19c284..8fc154346 100755
--- a/tests/openpgp/setup.scm
+++ b/tests/openpgp/setup.scm
@@ -55,14 +55,6 @@
CLOSED_FD fd STDERR_FILENO)))
'(500 9000 32000 80000))
-(define (dearmor source-name sink-name)
- (pipe:do
- (pipe:open source-name (logior O_RDONLY O_BINARY))
- (pipe:spawn `(,@GPG --dearmor))
- (pipe:write-to sink-name
- (logior O_WRONLY O_CREAT O_BINARY)
- #o600)))
-
(for-each-p "Unpacking samples"
(lambda (name)
(dearmor (in-srcdir (string-append name "o.asc")) name))