smack_accesses_free(handle);
int pid = fork();
+ char *label;
RUNNER_ASSERT(-1 != pid);
if (0 == pid) {
LogDebug("child, create_new_socket");
int sockfd = create_new_socket();
+
+ label = security_server_get_smacklabel_sockfd(sockfd);
+ RUNNER_ASSERT_MSG(label != NULL, "security_server_get_smacklabel_sockfd failed");
+ RUNNER_ASSERT_MSG(strcmp(label,"")==0, "label is \""<< label<<"\"");
+ free(label);
+
LogDebug("child, listen");
if (listen(sockfd, 5) < 0) {
LogDebug("child, exit");
exit(1);
}
- LogDebug("child, accept");
+ label = security_server_get_smacklabel_sockfd(sockfd);
+ RUNNER_ASSERT_MSG(label != NULL, "security_server_get_smacklabel_sockfd failed");
+ RUNNER_ASSERT_MSG(strcmp(label,"")==0, "label is \""<< label<<"\"");
+ free(label);
+
+
+ LogDebug("child, accept");
struct sockaddr_un client_addr;
socklen_t client_len = sizeof(client_addr);
int csockfd;
LogDebug("child, loop");
close(csockfd);
}
+
+
+ label = security_server_get_smacklabel_sockfd(sockfd);
+ RUNNER_ASSERT_MSG(label != NULL, "security_server_get_smacklabel_sockfd failed");
+ RUNNER_ASSERT_MSG(strcmp(label,subject_label)==0, "label is \""<< label<<"\"" << "subject_label is \""<< subject_label<<"\"" );
+ free(label);
+
LogDebug("Exit!");
exit(1);
} else {
LogDebug("Parent, sleep 2");
sleep(1);
int sockfd = connect_to_testserver();
+
+ label = security_server_get_smacklabel_sockfd(sockfd);
+ RUNNER_ASSERT_MSG(label != NULL, "security_server_get_smacklabel_sockfd failed");
+ RUNNER_ASSERT_MSG(strcmp(label,subject_label)==0, "label is \""<< label<<"\"" << "subject_label is \""<< subject_label<<"\"" );
+ free(label);
+
LogDebug("Parent: sockfd: " << sockfd);
if (sockfd >= 0) {
result1 = security_server_check_privilege_by_sockfd(