tests: add so_peercred variants with different xlat verbosity levels
* tests/so_peercred-Xabbrev.c: New file. * tests/so_peercred-Xraw.c: Likewise. * tests/so_peercred-Xverbose.c: Likewise. * tests/pure_executables.list: Add so_peercred-Xabbrev, so_peercred-Xraw, and so_peercred-Xverbose. * tests/.gitignore: Likewise. * tests/so_peercred.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags. * tests/gen_tests.in (so_peercred-Xabbrev, so_peercred-Xraw, so_peercred-Xverbose): New tests. Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
This commit is contained in:
parent
034b10936c
commit
3435de54af
3
tests/.gitignore
vendored
3
tests/.gitignore
vendored
@ -465,6 +465,9 @@ sigsuspend
|
||||
sleep
|
||||
so_linger
|
||||
so_peercred
|
||||
so_peercred-Xabbrev
|
||||
so_peercred-Xraw
|
||||
so_peercred-Xverbose
|
||||
sock_filter-v
|
||||
socketcall
|
||||
sockopt-sol_netlink
|
||||
|
@ -408,6 +408,9 @@ sigreturn -esignal='!USR1'
|
||||
sigsuspend -a19 -esignal=none
|
||||
so_linger -e trace=getsockopt,setsockopt
|
||||
so_peercred -e trace=getsockopt
|
||||
so_peercred-Xabbrev -e trace=getsockopt -Xabbrev
|
||||
so_peercred-Xraw -e trace=getsockopt -Xraw -a39
|
||||
so_peercred-Xverbose -e trace=getsockopt -Xverbose
|
||||
sock_filter-v -v -e trace=getsockopt,setsockopt
|
||||
socketcall -a20
|
||||
sockopt-sol_netlink -e trace=getsockopt,setsockopt
|
||||
|
@ -387,6 +387,9 @@ sigreturn
|
||||
sigsuspend
|
||||
so_linger
|
||||
so_peercred
|
||||
so_peercred-Xabbrev
|
||||
so_peercred-Xraw
|
||||
so_peercred-Xverbose
|
||||
sock_filter-v
|
||||
socketcall
|
||||
sockopt-sol_netlink
|
||||
|
1
tests/so_peercred-Xabbrev.c
Normal file
1
tests/so_peercred-Xabbrev.c
Normal file
@ -0,0 +1 @@
|
||||
#include "so_peercred.c"
|
2
tests/so_peercred-Xraw.c
Normal file
2
tests/so_peercred-Xraw.c
Normal file
@ -0,0 +1,2 @@
|
||||
#define XLAT_RAW 1
|
||||
#include "so_peercred.c"
|
2
tests/so_peercred-Xverbose.c
Normal file
2
tests/so_peercred-Xverbose.c
Normal file
@ -0,0 +1,2 @@
|
||||
#define XLAT_VERBOSE 1
|
||||
#include "so_peercred.c"
|
@ -46,6 +46,28 @@ get_peercred(int fd, void *val, socklen_t *len)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static const char *
|
||||
so_str(void)
|
||||
{
|
||||
static char buf[256];
|
||||
|
||||
if (!buf[0]) {
|
||||
#if XLAT_RAW
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%#x, %#x", SOL_SOCKET, SO_PEERCRED);
|
||||
#elif XLAT_VERBOSE
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%#x /* SOL_SOCKET */, %#x /* SO_PEERCRED */",
|
||||
SOL_SOCKET, SO_PEERCRED);
|
||||
#else
|
||||
snprintf(buf, sizeof(buf),
|
||||
"SOL_SOCKET, SO_PEERCRED");
|
||||
#endif
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
@ -59,7 +81,7 @@ main(void)
|
||||
/* classic getsockopt */
|
||||
*len = sizeof(*peercred);
|
||||
get_peercred(sv[0], peercred, len);
|
||||
printf("getsockopt(%d, SOL_SOCKET, SO_PEERCRED", sv[0]);
|
||||
printf("getsockopt(%d, %s", sv[0], so_str());
|
||||
PRINT_FIELD_D(", {", *peercred, pid);
|
||||
PRINT_FIELD_UID(", ", *peercred, uid);
|
||||
PRINT_FIELD_UID(", ", *peercred, gid);
|
||||
@ -72,7 +94,7 @@ main(void)
|
||||
/* getsockopt with optlen larger than necessary - shortened */
|
||||
*len = sizeof(*peercred) + 1;
|
||||
get_peercred(fd, peercred, len);
|
||||
printf("getsockopt(%d, SOL_SOCKET, SO_PEERCRED", fd);
|
||||
printf("getsockopt(%d, %s", fd, so_str());
|
||||
PRINT_FIELD_D(", {", *peercred, pid);
|
||||
PRINT_FIELD_UID(", ", *peercred, uid);
|
||||
PRINT_FIELD_UID(", ", *peercred, gid);
|
||||
@ -82,14 +104,14 @@ main(void)
|
||||
/* getsockopt with optlen smaller than usual - truncated to ucred.pid */
|
||||
*len = sizeof(peercred->pid);
|
||||
get_peercred(fd, peercred, len);
|
||||
printf("getsockopt(%d, SOL_SOCKET, SO_PEERCRED", fd);
|
||||
printf("getsockopt(%d, %s", fd, so_str());
|
||||
PRINT_FIELD_D(", {", *peercred, pid);
|
||||
printf("}, [%d]) = %s\n", *len, errstr);
|
||||
|
||||
/* getsockopt with optlen smaller than usual - truncated to ucred.uid */
|
||||
*len = offsetof(struct ucred, gid);
|
||||
get_peercred(fd, peercred, len);
|
||||
printf("getsockopt(%d, SOL_SOCKET, SO_PEERCRED", fd);
|
||||
printf("getsockopt(%d, %s", fd, so_str());
|
||||
PRINT_FIELD_D(", {", *peercred, pid);
|
||||
PRINT_FIELD_UID(", ", *peercred, uid);
|
||||
printf("}, [%d]) = %s\n", *len, errstr);
|
||||
@ -97,20 +119,20 @@ main(void)
|
||||
/* getsockopt with optlen larger than usual - truncated to raw */
|
||||
*len = sizeof(*peercred) - 1;
|
||||
get_peercred(fd, peercred, len);
|
||||
printf("getsockopt(%d, SOL_SOCKET, SO_PEERCRED, ", fd);
|
||||
printf("getsockopt(%d, %s, ", fd, so_str());
|
||||
print_quoted_hex(peercred, *len);
|
||||
printf(", [%d]) = %s\n", *len, errstr);
|
||||
|
||||
/* getsockopt optval EFAULT */
|
||||
*len = sizeof(*peercred);
|
||||
get_peercred(fd, &peercred->uid, len);
|
||||
printf("getsockopt(%d, SOL_SOCKET, SO_PEERCRED, %p, [%d]) = %s\n",
|
||||
fd, &peercred->uid, *len, errstr);
|
||||
printf("getsockopt(%d, %s, %p, [%d]) = %s\n",
|
||||
fd, so_str(), &peercred->uid, *len, errstr);
|
||||
|
||||
/* getsockopt optlen EFAULT */
|
||||
get_peercred(fd, peercred, len + 1);
|
||||
printf("getsockopt(%d, SOL_SOCKET, SO_PEERCRED, %p, %p) = %s\n",
|
||||
fd, peercred, len + 1, errstr);
|
||||
printf("getsockopt(%d, %s, %p, %p) = %s\n",
|
||||
fd, so_str(), peercred, len + 1, errstr);
|
||||
|
||||
puts("+++ exited with 0 +++");
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user