mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
tests: Modify unix_socket/unix_socket_client to accept abstract names
Signed-off-by: Tyler Hicks <tyhicks@canonical.com> Acked-by: Seth Arnold <seth.arnold@canonical.com>
This commit is contained in:
parent
1cd336386e
commit
f7465573b7
2 changed files with 34 additions and 7 deletions
|
@ -87,17 +87,33 @@ int main (int argc, char *argv[])
|
|||
struct pollfd pfd;
|
||||
char msg_buf[MSG_BUF_MAX];
|
||||
size_t msg_buf_len;
|
||||
const char *sun_path;
|
||||
size_t sun_path_len;
|
||||
pid_t pid;
|
||||
int sock, type, rc;
|
||||
|
||||
if (argc != 5) {
|
||||
fprintf(stderr,
|
||||
"Usage: %s <socket> <type> <message> <client>\n\n"
|
||||
" socket\t\ta path for a bound socket or a name prepended with '@' for an abstract socket\n"
|
||||
" type\t\tstream, dgram, or seqpacket\n",
|
||||
argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
addr.sun_family = AF_UNIX;
|
||||
memset(addr.sun_path, 0, sizeof(addr.sun_path));
|
||||
|
||||
sun_path = argv[1];
|
||||
sun_path_len = strlen(sun_path);
|
||||
if (sun_path[0] == '@') {
|
||||
memcpy(addr.sun_path, sun_path, sun_path_len);
|
||||
addr.sun_path[0] = '\0';
|
||||
sun_path_len = sizeof(addr.sun_path);
|
||||
} else {
|
||||
memcpy(addr.sun_path, sun_path, sun_path_len + 1);
|
||||
}
|
||||
|
||||
if (!strcmp(argv[2], "stream")) {
|
||||
type = SOCK_STREAM;
|
||||
} else if (!strcmp(argv[2], "dgram")) {
|
||||
|
@ -122,10 +138,8 @@ int main (int argc, char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
|
||||
addr.sun_family = AF_UNIX;
|
||||
strcpy(addr.sun_path, argv[1]);
|
||||
rc = bind(sock, (struct sockaddr *)&addr,
|
||||
strlen(addr.sun_path) + sizeof(addr.sun_family));
|
||||
sun_path_len + sizeof(addr.sun_family));
|
||||
if (rc < 0) {
|
||||
perror("FAIL - bind");
|
||||
exit(1);
|
||||
|
@ -144,7 +158,7 @@ int main (int argc, char *argv[])
|
|||
perror("FAIL - fork");
|
||||
exit(1);
|
||||
} else if (!pid) {
|
||||
execl(argv[4], argv[4], argv[1], argv[2], NULL);
|
||||
execl(argv[4], argv[4], sun_path, argv[2], NULL);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -81,6 +81,8 @@ static int connectionless_messaging(int sock)
|
|||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct sockaddr_un peer_addr;
|
||||
const char *sun_path;
|
||||
size_t sun_path_len;
|
||||
int sock, type, rc;
|
||||
|
||||
if (argc != 3) {
|
||||
|
@ -90,6 +92,19 @@ int main(int argc, char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
|
||||
peer_addr.sun_family = AF_UNIX;
|
||||
memset(peer_addr.sun_path, 0, sizeof(peer_addr.sun_path));
|
||||
|
||||
sun_path = argv[1];
|
||||
sun_path_len = strlen(sun_path);
|
||||
if (sun_path[0] == '@') {
|
||||
memcpy(peer_addr.sun_path, sun_path, sun_path_len);
|
||||
peer_addr.sun_path[0] = '\0';
|
||||
sun_path_len = sizeof(peer_addr.sun_path);
|
||||
} else {
|
||||
memcpy(peer_addr.sun_path, sun_path, sun_path_len + 1);
|
||||
}
|
||||
|
||||
if (!strcmp(argv[2], "stream")) {
|
||||
type = SOCK_STREAM;
|
||||
} else if (!strcmp(argv[2], "dgram")) {
|
||||
|
@ -107,10 +122,8 @@ int main(int argc, char *argv[])
|
|||
exit(1);
|
||||
}
|
||||
|
||||
peer_addr.sun_family = AF_UNIX;
|
||||
strcpy(peer_addr.sun_path, argv[1]);
|
||||
rc = connect(sock, (struct sockaddr *)&peer_addr,
|
||||
strlen(peer_addr.sun_path) + sizeof(peer_addr.sun_family));
|
||||
sun_path_len + sizeof(peer_addr.sun_family));
|
||||
if (rc < 0) {
|
||||
perror("FAIL CLIENT - connect");
|
||||
exit(1);
|
||||
|
|
Loading…
Add table
Reference in a new issue