audit-3.0.8-linux-headers-5.17.patch 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. Upstream rejected a workaround/fix at https://github.com/linux-audit/audit-userspace/pull/253
  2. / https://github.com/linux-audit/audit-userspace/issues/252#issuecomment-1078595249.
  3. Instead, in Fedora (same maintainer as upstream), they're patching the headers then unpatching before install.
  4. Apparently the swig bindings are on their way out but I'm not convinced that's going to be a quick migration given the API will.. surely change?
  5. It's not ideal but let's take the patch slyfox ended up using in nixpkgs anyway.
  6. https://bugs.gentoo.org/836702
  7. From beed138222421a2eb4212d83cb889404bd7efc49 Mon Sep 17 00:00:00 2001
  8. From: Sergei Trofimovich <slyich@gmail.com>
  9. Date: Wed, 23 Mar 2022 07:27:05 +0000
  10. Subject: [PATCH] auditswig.i: avoid setter generation for audit_rule_data::buf
  11. As it's a flexible array generated code was never safe to use.
  12. With kernel's https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ed98ea2128b6fd83bce13716edf8f5fe6c47f574
  13. change it's a build failure now:
  14. audit> audit_wrap.c:5010:15: error: invalid use of flexible array member
  15. audit> 5010 | arg1->buf = (char [])(char *)memcpy(malloc((size)*sizeof(char)), (const char *)(arg2), sizeof(char)*(size));
  16. audit> | ^
  17. Let's avoid setter generation entirely.
  18. Closes: https://github.com/linux-audit/audit-userspace/issues/252
  19. --- a/bindings/swig/src/auditswig.i
  20. +++ b/bindings/swig/src/auditswig.i
  21. @@ -39,6 +39,10 @@ signed
  22. #define __attribute(X) /*nothing*/
  23. typedef unsigned __u32;
  24. typedef unsigned uid_t;
  25. +/* Sidestep SWIG's limitation of handling c99 Flexible arrays by not:
  26. + * generating setters against them: https://github.com/swig/swig/issues/1699
  27. + */
  28. +%ignore audit_rule_data::buf;
  29. %include "/usr/include/linux/audit.h"
  30. #define __extension__ /*nothing*/
  31. %include <stdint.i>