Exemplo n.º 1
0
static int is_session_invalid(u32 decoding, u32 flags) {
	int is_secure;
	struct client_security_info sec_info;
	int client_count = 0;
	int secure_session_running = 0;
	is_secure = (flags & VCD_CP_SESSION) ? 1:0;
	client_count = vcd_get_clients_security_info(&sec_info);
	secure_session_running = (sec_info.secure_enc > 0) ||
			(sec_info.secure_dec > 0);
	if (!is_secure) {
		if (secure_session_running) {
			pr_err("Secure vs non secure session: FAILURE\n");
			return -EACCES;
		}
	}
	return 0;
}
Exemplo n.º 2
0
static int is_session_invalid(u32 decoding, u32 flags)
{
	int is_secure;
	struct client_security_info sec_info;
	int client_count = 0;
	int secure_session_running = 0;
	is_secure = (flags & VCD_CP_SESSION) ? 1 : 0;
	client_count = vcd_get_clients_security_info(&sec_info);
	secure_session_running = (sec_info.secure_enc > 0) ||
			(sec_info.secure_dec > 0);
	if (!decoding && is_secure) {
		if ((sec_info.secure_dec == 1)) {
			VCD_MSG_LOW("SE-SD: SUCCESS\n");
		}
		else {
			VCD_MSG_LOW("SE is permitted only with SD: FAILURE\n");
			return -EACCES;
		}
	} else if (!decoding && !is_secure) {
		if (secure_session_running) {
			VCD_MSG_LOW("SD-NSE: FAILURE\n");
			VCD_MSG_LOW("SE-NSE: FAILURE\n");
			return -EACCES;
		}
	} else if (decoding && is_secure) {
		if (client_count > 0) {
			VCD_MSG_LOW("S/NS-SD: FAILURE\n");
			if (sec_info.secure_enc > 0 ||
				sec_info.non_secure_enc > 0) {
				return -EAGAIN;
			}
			return -EACCES;
		}
	} else {
		if (sec_info.secure_dec > 0) {
			VCD_MSG_LOW("SD-NSD: FAILURE\n");
			return -EACCES;
		}
	}
	return 0;
}