commit a89c0cadcfa9260cce039772b1a7d0c4744a63c1
parent 07c0677b7b96cc69109b8dda9cebd01e62aa2f26
Author: Jo-Philipp Wich <jow@openwrt.org>
Date: Thu, 25 Jun 2015 17:56:29 +0200
shadowsocks-client: fix fortify source compatibility
The shadowsocks source uses the name `encrypt` which is already reserved by
the `unistd.h` header. Rename the local `encrypt` and `decrypt` functions to
`crypto_encrypt` and `crypto_decrypt` in order to prevent clashes with the
standard headers.
Fixes the following build error oberserved on the buildbot:
In file included from client.c:19:0:
crypto.h:18:5: error: conflicting types for 'encrypt'
int encrypt(int sockfd, struct link *ln);
^
In file included from .../staging_dir/toolchain-mipsel_mips32_gcc-4.8-linaro_musl-1.1.10/include/fortify/unistd.h:20:0,
from client.c:12:
.../staging_dir/toolchain-mipsel_mips32_gcc-4.8-linaro_musl-1.1.10/include/unistd.h:145:6: note: previous declaration of 'encrypt' was here
void encrypt(char *, int);
^
make[3]: *** [sslocal] Error 1
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
Diffstat:
1 file changed, 72 insertions(+), 0 deletions(-)
diff --git a/net/shadowsocks-client/patches/100-fortify-source-compat.patch b/net/shadowsocks-client/patches/100-fortify-source-compat.patch
@@ -0,0 +1,72 @@
+--- a/client.c
++++ b/client.c
+@@ -111,7 +111,7 @@ int client_do_local_read(int sockfd, str
+ goto out;
+ }
+
+- if (encrypt(sockfd, ln) == -1)
++ if (crypto_encrypt(sockfd, ln) == -1)
+ goto out;
+
+ ret = do_send(ln->server_sockfd, ln, "cipher", 0);
+@@ -172,7 +172,7 @@ int client_do_server_read(int sockfd, st
+ }
+ }
+
+- if (decrypt(sockfd, ln) == -1)
++ if (crypto_decrypt(sockfd, ln) == -1)
+ goto out;
+
+ if (ln->state & SS_UDP) {
+--- a/crypto.c
++++ b/crypto.c
+@@ -185,7 +185,7 @@ err:
+ return -1;
+ }
+
+-int encrypt(int sockfd, struct link *ln)
++int crypto_encrypt(int sockfd, struct link *ln)
+ {
+ int len, cipher_len;
+ EVP_CIPHER_CTX *ctx_p;
+@@ -223,7 +223,7 @@ err:
+ return -1;
+ }
+
+-int decrypt(int sockfd, struct link *ln)
++int crypto_decrypt(int sockfd, struct link *ln)
+ {
+ int len, text_len;
+ EVP_CIPHER_CTX *ctx_p;
+--- a/crypto.h
++++ b/crypto.h
+@@ -15,7 +15,7 @@ extern int iv_len;
+
+ int crypto_init(char *key, char *method);
+ void crypto_exit(void);
+-int encrypt(int sockfd, struct link *ln);
+-int decrypt(int sockfd, struct link *ln);
++int crypto_encrypt(int sockfd, struct link *ln);
++int crypto_decrypt(int sockfd, struct link *ln);
+
+ #endif
+--- a/server.c
++++ b/server.c
+@@ -36,7 +36,7 @@ int server_do_remote_read(int sockfd, st
+ goto out;
+ }
+
+- if (encrypt(sockfd, ln) == -1)
++ if (crypto_encrypt(sockfd, ln) == -1)
+ goto out;
+
+ ret = do_send(ln->local_sockfd, ln, "cipher", 0);
+@@ -91,7 +91,7 @@ int server_do_local_read(int sockfd, str
+ }
+ }
+
+- if (decrypt(sockfd, ln) == -1)
++ if (crypto_decrypt(sockfd, ln) == -1)
+ goto out;
+
+ if (ln->state & SS_UDP) {