diff options
author | Hiroki Sato <hrs@FreeBSD.org> | 2008-10-30 07:43:17 +0000 |
---|---|---|
committer | Hiroki Sato <hrs@FreeBSD.org> | 2008-10-30 07:43:17 +0000 |
commit | b638279af655611d44255e87528f1d251f4ce12d (patch) | |
tree | 59d5c593436454994ee216525ffb45031d7eb80b /japanese/FreeWnn-server | |
parent | 11bf49d1ea8cec5d45557d4727635d5b81ec6ae1 (diff) | |
download | ports-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')
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); |