aboutsummaryrefslogtreecommitdiff
path: root/japanese/FreeWnn-server
diff options
context:
space:
mode:
authorHiroki Sato <hrs@FreeBSD.org>2008-10-30 07:43:17 +0000
committerHiroki Sato <hrs@FreeBSD.org>2008-10-30 07:43:17 +0000
commitb638279af655611d44255e87528f1d251f4ce12d (patch)
tree59d5c593436454994ee216525ffb45031d7eb80b /japanese/FreeWnn-server
parent11bf49d1ea8cec5d45557d4727635d5b81ec6ae1 (diff)
downloadports-b638279af655611d44255e87528f1d251f4ce12d.tar.gz
ports-b638279af655611d44255e87528f1d251f4ce12d.zip
- Add "-a ADDR" option to jserver and "listenaddr" directive to
jserverrc. This specifies listen address of the INET socket. Note that the default value is set as 127.0.0.1. If you need the old behavior (listen INADDR_ANY), use "-a 0.0.0.0" in $wnn_flags or modify jserverrc. - Fix a buffer overflow when very long file name is specified in the -f option. - Fix a typo in CONFIGURE_ARGS and COMMENT. - Rename a patch file (patch-Wnn-jd-serverdef).
Notes
Notes: svn path=/head/; revision=222225
Diffstat (limited to 'japanese/FreeWnn-server')
-rw-r--r--japanese/FreeWnn-server/Makefile6
-rw-r--r--japanese/FreeWnn-server/files/patch-Wnn-jserver-de.c67
-rw-r--r--japanese/FreeWnn-server/files/patch-Wnn-jserver-de_header.h19
-rw-r--r--japanese/FreeWnn-server/files/patch-Wnn-jserver-initjserv.c24
4 files changed, 109 insertions, 7 deletions
diff --git a/japanese/FreeWnn-server/Makefile b/japanese/FreeWnn-server/Makefile
index 865db29eaf7c..67e4e5e20deb 100644
--- a/japanese/FreeWnn-server/Makefile
+++ b/japanese/FreeWnn-server/Makefile
@@ -7,7 +7,7 @@
PORTNAME= FreeWnn
PORTVERSION= 1.1.1.a021
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES?= japanese
MASTER_SITES= ftp://ftp.freewnn.org/pub/%SUBDIR%/ \
${MASTER_SITE_SOURCEFORGE_JP}
@@ -17,7 +17,7 @@ PKGNAMESUFFIX= -server
DISTNAME= ${PORTNAME}-1.1.1-a021
MAINTAINER= hrs@FreeBSD.org
-COMMENT?= A Japanese/Chinese/Korean input method (Japanese client libraries)
+COMMENT?= A Japanese/Chinese/Korean input method (Japanese server)
USE_BZIP2= yes
GNU_CONFIGURE= yes
@@ -32,7 +32,7 @@ SUB_LIST= RC_SUBR=${RC_SUBR}
PKGINSTALL= ${WRKDIR}/pkg-install
WNNTYPE?= WNN
-CONFIGURE_ARGS= --enable-library=no ${CONFIGURE_ARGS.${WNNTYPE}}
+CONFIGURE_ARGS= --enable-libraries=no ${CONFIGURE_ARGS.${WNNTYPE}}
# Wnn
LIB_DEPENDS.WNN= wnn.0:${PORTSDIR}/japanese/FreeWnn-lib
diff --git a/japanese/FreeWnn-server/files/patch-Wnn-jserver-de.c b/japanese/FreeWnn-server/files/patch-Wnn-jserver-de.c
new file mode 100644
index 000000000000..7b1e79e93667
--- /dev/null
+++ b/japanese/FreeWnn-server/files/patch-Wnn-jserver-de.c
@@ -0,0 +1,67 @@
+--- Wnn/jserver/de.c.orig 2004-06-19 01:32:41.000000000 +0900
++++ Wnn/jserver/de.c 2008-10-30 15:45:46.000000000 +0900
+@@ -102,9 +102,9 @@
+ #endif
+
+ #ifndef INET6
+-# define OPTIONARGS "Df:s:h:N:p:vu4"
++# define OPTIONARGS "a:Df:s:h:N:p:vu4"
+ #else
+-# define OPTIONARGS "Df:s:h:N:p:vu46"
++# define OPTIONARGS "a:Df:s:h:N:p:vu46"
+ #endif /* INET6 */
+
+ /* Accept Socket */
+@@ -1063,7 +1063,16 @@
+ #else
+ saddr_in.sin_family = AF_INET;
+ saddr_in.sin_port = htons (port);
+- saddr_in.sin_addr.s_addr = htonl (INADDR_ANY);
++ if (!inet_aton(listenaddr, &saddr_in.sin_addr)) {
++ struct hostent *hp;
++ struct in_addr **pptr;
++
++ if ((hp = gethostbyname(listenaddr)) == NULL) {
++ xerror ("could not create inet socket");
++ }
++ pptr = (struct in_addr **)hp->h_addr_list;
++ memcpy(&saddr_in.sin_addr, pptr[0], sizeof(struct in_addr));
++ }
+ if ((sock_d_in = socket (AF_INET, SOCK_STREAM, 0)) == ERROR)
+ #endif
+ {
+@@ -1193,6 +1202,7 @@
+ {"inet", 0, NULL, '4'},
+ {"inet6", 0, NULL, '6'},
+ {"jserverrc", 1, NULL, 'f'},
++ {"listenaddr", 1, NULL, 'a'},
+ {"version", 0, NULL, 'v'},
+ {0, 0, 0, 0}
+ };
+@@ -1209,7 +1219,13 @@
+ break;
+
+ case 'f': /* --jserverrc FILENAME */
+- strcpy (jserverrcfile, optarg);
++ strncpy(jserverrcfile, optarg, sizeof(jserverrcfile) - 1);
++ jserverrcfile[sizeof(jserverrcfile) - 1] = '\0';
++ break;
++
++ case 'a': /* --listenaddr ADDR */
++ strncpy(listenaddr, optarg, sizeof(listenaddr) - 1);
++ listenaddr[sizeof(listenaddr) - 1] = '\0';
+ break;
+
+ case 's':
+@@ -1318,9 +1334,9 @@
+ {
+ fprintf(stderr,
+ #ifdef INET6
+- "usage: %s [-Du46][-f <init_file> -s <log_file(\"-\" for stderr)> -h <pos_file> -N <serverNO> -p <port_base>]\n",
++ "usage: %s [-Du46][-f <init_file> -a <listenaddr> -s <log_file(\"-\" for stderr)> -h <pos_file> -N <serverNO> -p <port_base>]\n",
+ #else
+- "usage: %s [-Du4][-f <init_file> -s <log_file(\"-\" for stderr)> -h <pos_file> -N <serverNO> -p <port_base>]\n",
++ "usage: %s [-Du4][-f <init_file> -a <listenaddr> -s <log_file(\"-\" for stderr)> -h <pos_file> -N <serverNO> -p <port_base>]\n",
+ #endif
+ cmd_name);
+ fprintf(stderr,
diff --git a/japanese/FreeWnn-server/files/patch-Wnn-jserver-de_header.h b/japanese/FreeWnn-server/files/patch-Wnn-jserver-de_header.h
new file mode 100644
index 000000000000..70c8a57c5a73
--- /dev/null
+++ b/japanese/FreeWnn-server/files/patch-Wnn-jserver-de_header.h
@@ -0,0 +1,19 @@
+--- Wnn/jserver/de_header.h.orig 2004-12-30 02:45:32.000000000 +0900
++++ Wnn/jserver/de_header.h 2008-10-30 15:45:17.000000000 +0900
+@@ -52,6 +52,8 @@
+ # endif /* KOREAN */
+ #endif /* CHINESE */
+
++#include <netdb.h>
++
+ #include "jslib.h"
+ #include "commonhd.h"
+ #include "jdata.h"
+@@ -205,6 +207,7 @@
+
+ GLOBAL char jserver_dir[MAXPATHLEN];
+ GLOBAL char jserverrcfile[MAXPATHLEN];
++GLOBAL char listenaddr[NI_MAXHOST];
+ GLOBAL char *hinsi_file_name GLOBAL_VAL(NULL);
+ GLOBAL char lang_dir[MAXPATHLEN];
+
diff --git a/japanese/FreeWnn-server/files/patch-Wnn-jserver-initjserv.c b/japanese/FreeWnn-server/files/patch-Wnn-jserver-initjserv.c
index 6fb5a53487a8..a6bd9d040f95 100644
--- a/japanese/FreeWnn-server/files/patch-Wnn-jserver-initjserv.c
+++ b/japanese/FreeWnn-server/files/patch-Wnn-jserver-initjserv.c
@@ -1,6 +1,22 @@
---- Wnn/jserver/initjserv.c.orig Wed Dec 7 18:33:51 2005
-+++ Wnn/jserver/initjserv.c Wed Dec 7 18:34:43 2005
-@@ -305,7 +305,9 @@
+--- Wnn/jserver/initjserv.c.orig 2003-05-12 03:43:15.000000000 +0900
++++ Wnn/jserver/initjserv.c 2008-10-30 16:01:50.000000000 +0900
+@@ -215,6 +215,15 @@
+ }
+ log_debug ("max_client=%d", max_client);
+ }
++ else if (listenaddr[0] == '\0' && strcmp (code, "listenaddr") == 0)
++ {
++ num = sscanf (data, "%s %s ", code, &listenaddr);
++ if (num != 2)
++ {
++ log_err ("command %s invalid.", code);
++ continue;
++ }
++ }
+ else if (strcmp (code, "max_sticky_env") == 0)
+ {
+ num = sscanf (data, "%s %d ", code, &max_sticky_env);
+@@ -305,7 +314,9 @@
}
fclose (fp);
@@ -10,7 +26,7 @@
return (0);
}
-@@ -340,7 +342,9 @@
+@@ -340,7 +351,9 @@
files[fid].localf = LOCAL;
strcpy (files[fid].name, buffer);