Home GnuPG

sexp: Fix broken gcry_sexp_nth.
8ca5966198b4Unpublished

Unpublished Commit · Learn More

Not On Permanent Ref: This commit is not an ancestor of any permanent ref.

Description

sexp: Fix broken gcry_sexp_nth.

* src/sexp.c (_gcry_sexp_nth): Return a valid S-expression for a data
element.
(NODE): Remove unused typedef.
(ST_HINT): Comment unused macro.
* tests/tsexp.c (bug_1594): New.
(main): Run new test.

Before 1.6.0 gcry_sexp_nth (list, 0) with a LIST of "(a (b 3:pqr) (c
3:456) (d 3:xyz))" returned the entire list. 1.6.0 instead returned
NULL. However, this is also surprising and the expected value would
be "(a)". This patch fixes this.

Somewhat related to that gcry_sexp_nth returned a broken list if
requesting index 1 of a list like "(n foo)". It returned just the
"foo" but not as a list which is required by the S-expression specs.
Due to this patch the returned value is now "(foo)".

Thanks to Ludovic Courtès for pointing out these problems.

(cherry picked from commit cbdc355415f83ed62da4f3618767eba54d7e6d37)

Resolved conflicts:
tests/tsexp.c: Fix for renamed file in master.

Details

Provenance
wernerAuthored on Jan 9 2014, 7:14 PM
Parents
rC420f42a5752e: mpi: Minor fix for Atari-mint.
Branches
Unknown
Tags
Unknown

Event Timeline

Werner Koch <wk@gnupg.org> committed rC8ca5966198b4: sexp: Fix broken gcry_sexp_nth. (authored by Werner Koch <wk@gnupg.org>).Jan 28 2014, 3:46 PM