|
9 | 9 | #include <linux/filter.h>
|
10 | 10 | #include <string.h>
|
11 | 11 | #include <netinet/in.h>
|
12 |
| -#include <linux/version.h> |
13 |
| -#include <sys/utsname.h> |
14 | 12 |
|
15 | 13 | #include "int.h"
|
16 | 14 | #include "bitops.h"
|
|
33 | 31 | #include "fdstore.h"
|
34 | 32 | #include "cr_options.h"
|
35 | 33 |
|
36 |
| - |
37 | 34 | #undef LOG_PREFIX
|
38 | 35 | #define LOG_PREFIX "sockets: "
|
39 | 36 |
|
@@ -658,6 +655,7 @@ int dump_socket_opts(int sk, SkOptsEntry *soe)
|
658 | 655 | int ret = 0, val;
|
659 | 656 | struct timeval tv;
|
660 | 657 | struct linger so_linger = { 0, 0 };
|
| 658 | + int family; |
661 | 659 |
|
662 | 660 | ret |= dump_opt(sk, SOL_SOCKET, SO_SNDBUF, &soe->so_sndbuf);
|
663 | 661 | ret |= dump_opt(sk, SOL_SOCKET, SO_RCVBUF, &soe->so_rcvbuf);
|
@@ -692,28 +690,23 @@ int dump_socket_opts(int sk, SkOptsEntry *soe)
|
692 | 690 | soe->so_reuseport = val ? true : false;
|
693 | 691 | soe->has_so_reuseport = true;
|
694 | 692 |
|
695 |
| - /* |
696 |
| - * Restrict SO_PASS{CRED,PIDFD,SEC} to AF_{UNIX,NETLINK,BLUETOOTH} while |
697 |
| - * kernel >= 6.16. |
698 |
| - */ |
699 |
| - |
700 |
| - |
701 |
| - ret |= dump_opt(sk, SOL_SOCKET, SO_PASSCRED, &val); |
702 |
| - soe->has_so_passcred = true; |
703 |
| - soe->so_passcred = val ? true : false; |
704 |
| - |
705 |
| - ret |= dump_opt(sk, SOL_SOCKET, SO_PASSSEC, &val); |
706 |
| - soe->has_so_passsec = true; |
707 |
| - soe->so_passsec = val ? true : false; |
708 |
| - |
| 693 | + if (dump_opt(sk, SOL_SOCKET, SO_DOMAIN, &family)) |
| 694 | + return -1; |
| 695 | + switch (family) { |
| 696 | + case AF_UNIX: |
709 | 697 |
|
710 |
| - ret |= dump_opt(sk, SOL_SOCKET, SO_PASSCRED, &val); |
711 |
| - soe->has_so_passcred = true; |
712 |
| - soe->so_passcred = val ? true : false; |
| 698 | + case AF_NETLINK: |
| 699 | + ret |= dump_opt(sk, SOL_SOCKET, SO_PASSCRED, &val); |
| 700 | + soe->has_so_passcred = true; |
| 701 | + soe->so_passcred = val ? true : false; |
713 | 702 |
|
714 |
| - ret |= dump_opt(sk, SOL_SOCKET, SO_PASSSEC, &val); |
715 |
| - soe->has_so_passsec = true; |
716 |
| - soe->so_passsec = val ? true : false; |
| 703 | + ret |= dump_opt(sk, SOL_SOCKET, SO_PASSSEC, &val); |
| 704 | + soe->has_so_passsec = true; |
| 705 | + soe->so_passsec = val ? true : false; |
| 706 | + break; |
| 707 | + default: |
| 708 | + break; |
| 709 | + } |
717 | 710 |
|
718 | 711 | ret |= dump_opt(sk, SOL_SOCKET, SO_DONTROUTE, &val);
|
719 | 712 | soe->has_so_dontroute = true;
|
|
0 commit comments