[LTP] [PATCH v3 00/36] Improve coverage for keyctl() syscall

Petr Vorel pvorel@suse.cz
Wed Sep 16 16:03:26 CEST 2026


Hi,

I adjusted Andrea's great v2 patchset to be able to finish it before git
freeze. I hopefully addressed all Cyril's suggestions. If not, ideally
we'd merge at least the tests which are ready. (I added .iterations = 2
only to keyctl23.c, maybe it should be in other tests.


Changes v2->v3:
Described at the commits itself, e.g.:
* changing configure setup
* using SAFE_KEYCTL()
* changing helper functions in keyctl_common.h to macros

Other changes - new commits (1 from Cyril and 2 mine).

NOTE: I found on VM with 6.17.0-rc5-4.gc548b9b-default that keyctl15.c
fails:

keyctl15.c:46: TFAIL: empty label is not NUL terminated 
That might be a reason why Andrea did not test it on failure
(modification asked by Cyril).

I wonder if it's a bug or not.

Kind regards,
Petr

Link to v2:
https://lore.kernel.org/ltp/20260904-keyctl_coverage-v2-0-43b78b15ef9f@suse.com/
https://patchwork.kernel.org/project/ltp/list/?series=1157990&state=*

Andrea Cervesato (33):
  lapi/keyctl.h: Add fallback definitions for extended ops
  keyctl10: Test KEYCTL_DESCRIBE format parsing
  keyctl11: Test KEYCTL_DESCRIBE with exact buffer size
  keyctl12: Test KEYCTL_DESCRIBE with too small buffer
  keyctl13: Test KEYCTL_DESCRIBE size query
  keyctl14: Negative tests for KEYCTL_DESCRIBE
  keyctl15: Test KEYCTL_GET_SECURITY label retrieval
  keyctl16: Test KEYCTL_GET_SECURITY truncated copy
  keyctl17: Negative tests for KEYCTL_GET_SECURITY
  keyctl18: Test basic KEYCTL_MOVE
  keyctl19: Test KEYCTL_MOVE with same source and destination
  keyctl20: Test KEYCTL_MOVE displacement
  keyctl21: Negative and boundary tests for KEYCTL_MOVE
  keyctl22: Test KEYCTL_RESTRICT_KEYRING reject-all
  keyctl23: Test KEYCTL_RESTRICT_KEYRING builtin_trusted
  keyctl24: Negative tests for KEYCTL_RESTRICT_KEYRING
  keyctl25: Test KEYCTL_DH_COMPUTE shared secret computation
  keyctl26: Test KEYCTL_DH_COMPUTE size query
  keyctl27: Test KEYCTL_DH_COMPUTE KDF key derivation
  keyctl28: Negative and boundary tests for KEYCTL_DH_COMPUTE
  lapi/keyctl.h: Add fallback definitions for public key ops
  keyctl29: Test KEYCTL_PKEY_QUERY on public key
  keyctl30: Test KEYCTL_PKEY_QUERY on private key
  keyctl31: Test KEYCTL_PKEY_ENCRYPT and KEYCTL_PKEY_DECRYPT
  keyctl32: Test KEYCTL_PKEY_SIGN and VERIFY
  keyctl33: Negative tests for KEYCTL_PKEY_*
  lapi/keyctl.h: Add capability fallback defines
  keyctl34: Test KEYCTL_CAPABILITIES flag retrieval
  keyctl35: Test KEYCTL_CAPABILITIES size query
  keyctl36: Test KEYCTL_CAPABILITIES buffer sizing
  keyctl37: Negative tests for KEYCTL_CAPABILITIES
  keyctl38: Test KEYCTL_WATCH_KEY add and remove
  keyctl39: Negative tests for KEYCTL_WATCH_KEY

Cyril Hrubis (1):
  lib: tst_test: Move the iterations to struct tst_test

Petr Vorel (2):
  lapi/keyctl.h: Add SAFE_ADD_KEY()
  tree: keyctl: Use SAFE_ADD_KEY()

 include/lapi/keyctl.h                         | 168 +++++++++++-
 include/tst_test.h                            |   4 +
 lib/tst_test.c                                |   8 +-
 m4/ltp-keyutils.m4                            |   7 +
 runtest/syscalls                              |  30 +++
 testcases/cve/cve-2016-7042.c                 |   4 +-
 testcases/kernel/syscalls/add_key/add_key03.c |   9 +-
 testcases/kernel/syscalls/add_key/add_key04.c |  14 +-
 testcases/kernel/syscalls/keyctl/.gitignore   |  30 +++
 testcases/kernel/syscalls/keyctl/keyctl02.c   |   8 +-
 testcases/kernel/syscalls/keyctl/keyctl03.c   |   4 +-
 testcases/kernel/syscalls/keyctl/keyctl06.c   |   6 +-
 testcases/kernel/syscalls/keyctl/keyctl10.c   |  99 +++++++
 testcases/kernel/syscalls/keyctl/keyctl11.c   |  62 +++++
 testcases/kernel/syscalls/keyctl/keyctl12.c   |  62 +++++
 testcases/kernel/syscalls/keyctl/keyctl13.c   |  46 ++++
 testcases/kernel/syscalls/keyctl/keyctl14.c   |  54 ++++
 testcases/kernel/syscalls/keyctl/keyctl15.c   |  64 +++++
 testcases/kernel/syscalls/keyctl/keyctl16.c   |  74 ++++++
 testcases/kernel/syscalls/keyctl/keyctl17.c   |  55 ++++
 testcases/kernel/syscalls/keyctl/keyctl18.c   |  51 ++++
 testcases/kernel/syscalls/keyctl/keyctl19.c   |  43 +++
 testcases/kernel/syscalls/keyctl/keyctl20.c   |  51 ++++
 testcases/kernel/syscalls/keyctl/keyctl21.c   | 111 ++++++++
 testcases/kernel/syscalls/keyctl/keyctl22.c   |  54 ++++
 testcases/kernel/syscalls/keyctl/keyctl23.c   | 134 ++++++++++
 testcases/kernel/syscalls/keyctl/keyctl24.c   | 171 ++++++++++++
 testcases/kernel/syscalls/keyctl/keyctl25.c   |  66 +++++
 testcases/kernel/syscalls/keyctl/keyctl26.c   |  53 ++++
 testcases/kernel/syscalls/keyctl/keyctl27.c   |  78 ++++++
 testcases/kernel/syscalls/keyctl/keyctl28.c   | 140 ++++++++++
 testcases/kernel/syscalls/keyctl/keyctl29.c   |  90 +++++++
 testcases/kernel/syscalls/keyctl/keyctl30.c   |  86 ++++++
 testcases/kernel/syscalls/keyctl/keyctl31.c   | 110 ++++++++
 testcases/kernel/syscalls/keyctl/keyctl32.c   | 121 +++++++++
 testcases/kernel/syscalls/keyctl/keyctl33.c   | 247 ++++++++++++++++++
 testcases/kernel/syscalls/keyctl/keyctl34.c   |  61 +++++
 testcases/kernel/syscalls/keyctl/keyctl35.c   |  46 ++++
 testcases/kernel/syscalls/keyctl/keyctl36.c   |  84 ++++++
 testcases/kernel/syscalls/keyctl/keyctl37.c   |  63 +++++
 testcases/kernel/syscalls/keyctl/keyctl38.c   |  91 +++++++
 testcases/kernel/syscalls/keyctl/keyctl39.c   | 149 +++++++++++
 .../kernel/syscalls/keyctl/keyctl_common.h    |  62 +++++
 .../kernel/syscalls/keyctl/keyctl_dh_data.h   |  79 ++++++
 .../kernel/syscalls/keyctl/keyctl_pkey_data.h | 152 +++++++++++
 .../syscalls/request_key/request_key01.c      |   4 +-
 .../syscalls/request_key/request_key02.c      |   4 +-
 testcases/kernel/watchqueue/common.h          |   4 +-
 48 files changed, 3167 insertions(+), 46 deletions(-)
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl10.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl11.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl12.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl13.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl14.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl15.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl16.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl17.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl18.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl19.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl20.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl21.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl22.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl23.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl24.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl25.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl26.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl27.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl28.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl29.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl30.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl31.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl32.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl33.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl34.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl35.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl36.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl37.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl38.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl39.c
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl_common.h
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl_dh_data.h
 create mode 100644 testcases/kernel/syscalls/keyctl/keyctl_pkey_data.h

-- 
2.55.0



More information about the ltp mailing list