diff --git a/devel/gettext/Makefile b/devel/gettext/Makefile index c57e25a4eba..68bdc40d173 100644 --- a/devel/gettext/Makefile +++ b/devel/gettext/Makefile @@ -1,9 +1,9 @@ -# $OpenBSD: Makefile,v 1.55 2012/01/26 22:08:26 naddy Exp $ +# $OpenBSD: Makefile,v 1.56 2012/07/13 19:43:18 naddy Exp $ COMMENT= GNU gettext DISTNAME= gettext-0.18.1 -REVISION= 1 +REVISION= 2 SHARED_LIBS += intl 6.0 # .9.1 SHARED_LIBS += asprintf 1.0 # .0.0 SHARED_LIBS += gettextlib 3.0 # .0.0 diff --git a/devel/gettext/distinfo b/devel/gettext/distinfo index 202aa5e014f..bad38c3d58c 100644 --- a/devel/gettext/distinfo +++ b/devel/gettext/distinfo @@ -1,5 +1,2 @@ -MD5 (gettext-0.18.1.tar.gz) = KuBPlg1foDd0Y23e8Z69vw== -RMD160 (gettext-0.18.1.tar.gz) = RKDgYMH10nRiq41Y4B2i/qWkiqU= -SHA1 (gettext-0.18.1.tar.gz) = FPhwpUU5MogPgc6Qqlmz2p1Nr1w= SHA256 (gettext-0.18.1.tar.gz) = N6lHu65jwxc6LiyqDmH4K4bCPz4/AS+PMJ7q+Q2DnHs= SIZE (gettext-0.18.1.tar.gz) = 15140564 diff --git a/devel/gettext/patches/patch-gettext-runtime_intl_dcigettext_c b/devel/gettext/patches/patch-gettext-runtime_intl_dcigettext_c index c5b7ee28e28..7ca672ccd2c 100644 --- a/devel/gettext/patches/patch-gettext-runtime_intl_dcigettext_c +++ b/devel/gettext/patches/patch-gettext-runtime_intl_dcigettext_c @@ -1,7 +1,63 @@ -$OpenBSD: patch-gettext-runtime_intl_dcigettext_c,v 1.2 2010/07/03 03:23:22 naddy Exp $ ---- gettext-runtime/intl/dcigettext.c.orig Mon Jun 28 20:23:14 2010 -+++ gettext-runtime/intl/dcigettext.c Mon Jun 28 20:25:07 2010 -@@ -769,13 +769,17 @@ DCIGETTEXT (const char *domainname, const char *msgid1 +$OpenBSD: patch-gettext-runtime_intl_dcigettext_c,v 1.3 2012/07/13 19:43:18 naddy Exp $ +--- gettext-runtime/intl/dcigettext.c.orig Sat Dec 26 14:42:37 2009 ++++ gettext-runtime/intl/dcigettext.c Tue Jul 10 20:08:14 2012 +@@ -507,6 +507,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1 + const char *localename; + #endif + size_t domainname_len; ++ size_t xdomainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) +@@ -627,6 +628,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1 + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (dirname) + 1; + size_t path_max; ++ size_t resolved_dirname_len; + char *resolved_dirname; + char *ret; + +@@ -635,7 +637,8 @@ DCIGETTEXT (const char *domainname, const char *msgid1 + + for (;;) + { +- resolved_dirname = (char *) alloca (path_max + dirname_len); ++ resolved_dirname_len = path_max + dirname_len; ++ resolved_dirname = (char *) alloca (resolved_dirname_len); + ADD_BLOCK (block_list, tmp_dirname); + + __set_errno (0); +@@ -652,7 +655,8 @@ DCIGETTEXT (const char *domainname, const char *msgid1 + error but simply return the default string. */ + goto return_untranslated; + +- stpcpy (stpcpy (strchr (resolved_dirname, '\0'), "/"), dirname); ++ strlcat (resolved_dirname, "/", resolved_dirname_len); ++ strlcat (resolved_dirname, dirname, resolved_dirname_len); + dirname = resolved_dirname; + } + #ifndef IN_LIBGLOCALE +@@ -670,13 +674,14 @@ DCIGETTEXT (const char *domainname, const char *msgid1 + #endif + + domainname_len = strlen (domainname); +- xdomainname = (char *) alloca (strlen (categoryname) +- + domainname_len + 5); ++ xdomainname_len = strlen (categoryname) + domainname_len + 5; ++ xdomainname = (char *) alloca (xdomainname_len); + ADD_BLOCK (block_list, xdomainname); + +- stpcpy ((char *) mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), +- domainname, domainname_len), +- ".mo"); ++ strlcpy (xdomainname, categoryname, xdomainname_len); ++ strlcat (xdomainname, "/", xdomainname_len); ++ strlcat (xdomainname, domainname, xdomainname_len); ++ strlcat (xdomainname, ".mo", xdomainname_len); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); +@@ -769,13 +774,17 @@ DCIGETTEXT (const char *domainname, const char *msgid1 /* Create a new entry and add it to the search tree. */ size_t msgid_len; size_t size; @@ -20,7 +76,7 @@ $OpenBSD: patch-gettext-runtime_intl_dcigettext_c,v 1.2 2010/07/03 03:23:22 nadd #endif newp = (struct known_translation_t *) malloc (size); if (newp != NULL) -@@ -791,7 +795,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1 +@@ -791,7 +800,7 @@ DCIGETTEXT (const char *domainname, const char *msgid1 memcpy (new_domainname, domainname, domainname_len + 1); #ifdef HAVE_PER_THREAD_LOCALE new_localename = new_domainname + domainname_len + 1; diff --git a/devel/gettext/patches/patch-gettext-runtime_intl_l10nflist_c b/devel/gettext/patches/patch-gettext-runtime_intl_l10nflist_c new file mode 100644 index 00000000000..b7092e16165 --- /dev/null +++ b/devel/gettext/patches/patch-gettext-runtime_intl_l10nflist_c @@ -0,0 +1,80 @@ +$OpenBSD: patch-gettext-runtime_intl_l10nflist_c,v 1.1 2012/07/13 19:43:18 naddy Exp $ +--- gettext-runtime/intl/l10nflist.c.orig Sun Jun 28 21:44:04 2009 ++++ gettext-runtime/intl/l10nflist.c Tue Jul 10 23:41:41 2012 +@@ -183,6 +183,7 @@ _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_ + struct loaded_l10nfile **lastp; + struct loaded_l10nfile *retval; + char *cp; ++ size_t abs_filename_len; + size_t dirlist_count; + size_t entries; + int cnt; +@@ -193,7 +194,7 @@ _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_ + dirlist_len = 0; + + /* Allocate room for the full file name. */ +- abs_filename = (char *) malloc (dirlist_len ++ abs_filename_len = (dirlist_len + + strlen (language) + + ((mask & XPG_TERRITORY) != 0 + ? strlen (territory) + 1 : 0) +@@ -204,6 +205,7 @@ _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_ + + ((mask & XPG_MODIFIER) != 0 + ? strlen (modifier) + 1 : 0) + + 1 + strlen (filename) + 1); ++ abs_filename = (char *) malloc (abs_filename_len); + + if (abs_filename == NULL) + return NULL; +@@ -218,31 +220,31 @@ _nl_make_l10nflist (struct loaded_l10nfile **l10nfile_ + cp[-1] = '/'; + } + +- cp = stpcpy (cp, language); ++ strlcat (abs_filename, language, abs_filename_len); + + if ((mask & XPG_TERRITORY) != 0) + { +- *cp++ = '_'; +- cp = stpcpy (cp, territory); ++ strlcat (abs_filename, "_", abs_filename_len); ++ strlcat (abs_filename, territory, abs_filename_len); + } + if ((mask & XPG_CODESET) != 0) + { +- *cp++ = '.'; +- cp = stpcpy (cp, codeset); ++ strlcat (abs_filename, ".", abs_filename_len); ++ strlcat (abs_filename, codeset, abs_filename_len); + } + if ((mask & XPG_NORM_CODESET) != 0) + { +- *cp++ = '.'; +- cp = stpcpy (cp, normalized_codeset); ++ strlcat (abs_filename, ".", abs_filename_len); ++ strlcat (abs_filename, normalized_codeset, abs_filename_len); + } + if ((mask & XPG_MODIFIER) != 0) + { +- *cp++ = '@'; +- cp = stpcpy (cp, modifier); ++ strlcat (abs_filename, "@", abs_filename_len); ++ strlcat (abs_filename, modifier, abs_filename_len); + } + +- *cp++ = '/'; +- stpcpy (cp, filename); ++ strlcat (abs_filename, "/", abs_filename_len); ++ strlcat (abs_filename, filename, abs_filename_len); + + /* Look in list of already loaded domains whether it is already + available. */ +@@ -366,7 +368,7 @@ _nl_normalize_codeset (const char *codeset, size_t nam + if (retval != NULL) + { + if (only_digit) +- wp = stpcpy (retval, "iso"); ++ wp = (char *) memcpy (retval, "iso", 3) + 3; + else + wp = retval; +