--- /dev/null
+From d68db9f2cee975aad5e07b44485615f3d842ab45 Mon Sep 17 00:00:00 2001
+From: Darik Horn <dajhorn@vanadac.com>
+Date: Fri, 11 Jul 2014 16:17:18 -0400
+Subject: [PATCH] Change GetExeDir to GetStateDir in Cedar and Mayaqua.
+
+Resolve this AppArmor error by ensuring that certificate files files are
+written into /var/lib/softether instead of the current working directory:
+
+ Profile: /usr/sbin/softetherd
+ Operation: mkdir
+ Name: /usr/sbin/chain_certs
+ Denied: c
+ Logfile: /var/log/kern.log
+
+ 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
+
+Taken from Github
+https://github.com/dajhorn/SoftEtherVPN/commit/d68db9f2cee975aad5e07b44485615f3d842ab45.
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ src/Cedar/Protocol.c | 12 ++++++------
+ src/Mayaqua/Network.c | 6 +++---
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+Index: b/src/Cedar/Protocol.c
+===================================================================
+--- a/src/Cedar/Protocol.c
++++ b/src/Cedar/Protocol.c
+@@ -161,10 +161,10 @@
+ UINT i;\r
+ DIRLIST *dir;\r
+ wchar_t dirname[MAX_SIZE];\r
+- wchar_t exedir[MAX_SIZE];\r
++ wchar_t statedir[MAX_SIZE];\r
+ \r
+- GetExeDirW(exedir, sizeof(exedir));\r
+- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs");\r
++ GetStateDirW(statedir, sizeof(statedir));\r
++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs");\r
+ MakeDirExW(dirname);\r
+ \r
+ if (auto_save)\r
+@@ -461,7 +461,7 @@
+ void AddAllChainCertsToCertList(LIST *o)\r
+ {\r
+ wchar_t dirname[MAX_SIZE];\r
+- wchar_t exedir[MAX_SIZE];\r
++ wchar_t statedir[MAX_SIZE];\r
+ DIRLIST *dir;\r
+ // Validate arguments\r
+ if (o == NULL)\r
+@@ -469,9 +469,9 @@
+ return;\r
+ }\r
+ \r
+- GetExeDirW(exedir, sizeof(exedir));\r
++ GetStateDirW(statedir, sizeof(statedir));\r
+ \r
+- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs");\r
++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs");\r
+ \r
+ MakeDirExW(dirname);\r
+ \r
+Index: b/src/Mayaqua/Network.c
+===================================================================
+--- a/src/Mayaqua/Network.c
++++ b/src/Mayaqua/Network.c
+@@ -12588,7 +12588,7 @@
+ void AddChainSslCertOnDirectory(struct ssl_ctx_st *ctx)\r
+ {\r
+ wchar_t dirname[MAX_SIZE];\r
+- wchar_t exedir[MAX_SIZE];\r
++ wchar_t statedir[MAX_SIZE];\r
+ wchar_t txtname[MAX_SIZE];\r
+ DIRLIST *dir;\r
+ LIST *o;\r
+@@ -12602,9 +12602,9 @@
+ \r
+ o = NewListFast(NULL);\r
+ \r
+- GetExeDirW(exedir, sizeof(exedir));\r
++ GetStateDirW(statedir, sizeof(statedir));\r
+ \r
+- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs");\r
++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs");\r
+ \r
+ MakeDirExW(dirname);\r
+ \r