1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
//FEATURE_SDCARD_MEDIAEXN_SYSTEMCALL_ENCRYPTION
#include <linux/kernel.h>
#include <linux/linkage.h>
#include <linux/sched.h>
#include <linux/unistd.h>
#include "LGSDEncManager.h"
int propertyMediaCheck; // Media Ecryption üũ ����
char savedfileExtList[MAX_MEDIA_EXT_LENGTH];
char asecExtension[MAX_MEDIA_EXT_LENGTH] = ".ASEC";
/*
* System property�� Media Encryption ���� ����.
*/
asmlinkage long sys_set_media_property(int value)
{
// printk("%s :: SystemCall value: %d , propertymediacheck : %d\n", __func__,value,propertyMediaCheck);
propertyMediaCheck = value;
return 1;
}
int getMediaProperty(void){
return propertyMediaCheck;
}
/*
* Media File Ȯ���� ���� System call �Լ�.
*/
asmlinkage long sys_set_media_ext(char *mediaExtList)
{
memset(savedfileExtList, 0, sizeof(savedfileExtList));
if(mediaExtList != NULL){
strncpy(savedfileExtList, mediaExtList, strlen(mediaExtList));
}
// printk("%s :: savedfileExtList: %s\n", __func__,savedfileExtList);
return 1;
}
//#endif //FEATURE_SDCARD_MEDIAEXN_SYSTEMCALL_ENCRYPTION
char *ecryptfs_Extfilename(const unsigned char *filename){
char *pos = NULL;
int len , i;
if(filename == NULL) {
return pos;
}
// Ȯ���� ���� : ex> a.txt -> .txt
pos = strrchr(filename,'.');
if(pos == NULL){
return pos;
}
// �ҹ��� -> �빮��
len = strlen(pos);
for(i = 0 ; i < len ; i++){
if(*(pos+i) >= 'a' && *(pos+i) <= 'z'){
*(pos+i) = *(pos+i) -32;
}
}
return pos+1;
}
int ecryptfs_asecFileSearch(const unsigned char *filename){
char *extP = NULL;
// extract extension in filename
extP = ecryptfs_Extfilename(filename);
if(extP == NULL || strlen(extP) < 2){
printk(KERN_DEBUG "Extfilename is NULL\n");
return 0;
}
//check if the extension is asec
if(strstr(asecExtension,extP) == NULL){
return 0;
}
return 1;
}
int ecryptfs_mediaFileSearch(const unsigned char *filename){
char *extP = NULL;
// Filename���� Ȯ���� ����.
extP = ecryptfs_Extfilename(filename);
if(extP == NULL || strlen(extP) < 2){
printk(KERN_DEBUG "%s :: Extfilename is NULL\n", __func__);
return 0;
}
printk("%s :: savedfileExtList: %s\n", __func__,savedfileExtList);
// MediaType�� ���� ���� Ȯ�� // �����ϸ� status = 1���� ��ȯ : �̵�� �����̶�� �ǹ�
if(sizeof(savedfileExtList) != 0)
{
if(strstr(savedfileExtList,extP) == NULL){
printk(KERN_DEBUG "%s :: NOT ECRYPTFS_MEDIA_EXCEPTION\n", __func__);
return 0;
}
}
else
{
printk(KERN_DEBUG "%s :: getMediaExtList() = NULL\n", __func__);
return 0;
}
return 1;
}
|