1*4882a593SmuzhiyunFrom d68db9f2cee975aad5e07b44485615f3d842ab45 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Darik Horn <dajhorn@vanadac.com>
3*4882a593SmuzhiyunDate: Fri, 11 Jul 2014 16:17:18 -0400
4*4882a593SmuzhiyunSubject: [PATCH] Change GetExeDir to GetStateDir in Cedar and Mayaqua.
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunResolve this AppArmor error by ensuring that certificate files files are
7*4882a593Smuzhiyunwritten into /var/lib/softether instead of the current working directory:
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun	Profile: /usr/sbin/softetherd
10*4882a593Smuzhiyun	Operation: mkdir
11*4882a593Smuzhiyun	Name: /usr/sbin/chain_certs
12*4882a593Smuzhiyun	Denied: c
13*4882a593Smuzhiyun	Logfile: /var/log/kern.log
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	type=1400 audit: apparmor="DENIED" operation="mkdir" profile="/usr/sbin/softetherd" name="/usr/sbin/chain_certs/" pid=36448 comm="softetherd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunTaken from Github
18*4882a593Smuzhiyunhttps://github.com/dajhorn/SoftEtherVPN/commit/d68db9f2cee975aad5e07b44485615f3d842ab45.
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
21*4882a593SmuzhiyunSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
22*4882a593Smuzhiyun---
23*4882a593Smuzhiyun src/Cedar/Protocol.c  | 12 ++++++------
24*4882a593Smuzhiyun src/Mayaqua/Network.c |  6 +++---
25*4882a593Smuzhiyun 2 files changed, 9 insertions(+), 9 deletions(-)
26*4882a593Smuzhiyun
27*4882a593SmuzhiyunIndex: b/src/Cedar/Protocol.c
28*4882a593Smuzhiyun===================================================================
29*4882a593Smuzhiyun--- a/src/Cedar/Protocol.c
30*4882a593Smuzhiyun+++ b/src/Cedar/Protocol.c
31*4882a593Smuzhiyun@@ -161,10 +161,10 @@
32*4882a593Smuzhiyun 		UINT i;
33*4882a593Smuzhiyun 		DIRLIST *dir;
34*4882a593Smuzhiyun 		wchar_t dirname[MAX_SIZE];
35*4882a593Smuzhiyun-		wchar_t exedir[MAX_SIZE];
36*4882a593Smuzhiyun+		wchar_t statedir[MAX_SIZE];
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun-		GetExeDirW(exedir, sizeof(exedir));
39*4882a593Smuzhiyun-		CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs");
40*4882a593Smuzhiyun+		GetStateDirW(statedir, sizeof(statedir));
41*4882a593Smuzhiyun+		CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs");
42*4882a593Smuzhiyun 		MakeDirExW(dirname);
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun 		if (auto_save)
45*4882a593Smuzhiyun@@ -461,7 +461,7 @@
46*4882a593Smuzhiyun void AddAllChainCertsToCertList(LIST *o)
47*4882a593Smuzhiyun {
48*4882a593Smuzhiyun 	wchar_t dirname[MAX_SIZE];
49*4882a593Smuzhiyun-	wchar_t exedir[MAX_SIZE];
50*4882a593Smuzhiyun+	wchar_t statedir[MAX_SIZE];
51*4882a593Smuzhiyun 	DIRLIST *dir;
52*4882a593Smuzhiyun 	// Validate arguments
53*4882a593Smuzhiyun 	if (o == NULL)
54*4882a593Smuzhiyun@@ -469,9 +469,9 @@
55*4882a593Smuzhiyun 		return;
56*4882a593Smuzhiyun 	}
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun-	GetExeDirW(exedir, sizeof(exedir));
59*4882a593Smuzhiyun+	GetStateDirW(statedir, sizeof(statedir));
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun-	CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs");
62*4882a593Smuzhiyun+	CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs");
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun 	MakeDirExW(dirname);
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunIndex: b/src/Mayaqua/Network.c
67*4882a593Smuzhiyun===================================================================
68*4882a593Smuzhiyun--- a/src/Mayaqua/Network.c
69*4882a593Smuzhiyun+++ b/src/Mayaqua/Network.c
70*4882a593Smuzhiyun@@ -12588,7 +12588,7 @@
71*4882a593Smuzhiyun void AddChainSslCertOnDirectory(struct ssl_ctx_st *ctx)
72*4882a593Smuzhiyun {
73*4882a593Smuzhiyun 	wchar_t dirname[MAX_SIZE];
74*4882a593Smuzhiyun-	wchar_t exedir[MAX_SIZE];
75*4882a593Smuzhiyun+	wchar_t statedir[MAX_SIZE];
76*4882a593Smuzhiyun 	wchar_t txtname[MAX_SIZE];
77*4882a593Smuzhiyun 	DIRLIST *dir;
78*4882a593Smuzhiyun 	LIST *o;
79*4882a593Smuzhiyun@@ -12602,9 +12602,9 @@
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun 	o = NewListFast(NULL);
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun-	GetExeDirW(exedir, sizeof(exedir));
84*4882a593Smuzhiyun+	GetStateDirW(statedir, sizeof(statedir));
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun-	CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs");
87*4882a593Smuzhiyun+	CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs");
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun 	MakeDirExW(dirname);
90*4882a593Smuzhiyun
91