~ruther/guix-local

79e09ef2fd6892f7cf8d5af28a7f085f86146819 — Mark H Weaver 10 years ago c2ba49e
gnu: gettext: Update to 0.19.5.

* gnu/packages/patches/gettext-msgunfmt.patch: Remove file.
* gnu-system.am (dist_patch_DATA): Remove it.
* gnu/packages/gettext.scm (gnu-gettext): Update to 0.19.5.  Remove patch.
3 files changed, 2 insertions(+), 62 deletions(-)

M gnu-system.am
M gnu/packages/gettext.scm
D gnu/packages/patches/gettext-msgunfmt.patch
M gnu-system.am => gnu-system.am +0 -1
@@ 434,7 434,6 @@ dist_patch_DATA =						\
  gnu/packages/patches/gcc-libvtv-runpath.patch			\
  gnu/packages/patches/gcc-5.0-libvtv-runpath.patch		\
  gnu/packages/patches/geoclue-config.patch			\
  gnu/packages/patches/gettext-msgunfmt.patch			\
  gnu/packages/patches/ghostscript-runpath.patch		\
  gnu/packages/patches/gitolite-openssh-6.8-compat.patch	\
  gnu/packages/patches/glib-tests-desktop.patch			\

M gnu/packages/gettext.scm => gnu/packages/gettext.scm +2 -3
@@ 35,15 35,14 @@
(define-public gnu-gettext
  (package
    (name "gettext")
    (version "0.19.4")
    (version "0.19.5")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gettext/gettext-"
                                 version ".tar.gz"))
             (sha256
              (base32
               "0gvz86m4cs8bdf3mwmwsyx6lrq4ydfxgadrgd9jlx32z3bnz3jca"))
             (patches (list (search-patch "gettext-msgunfmt.patch")))))
               "0fppvj4l9maa9q1swvhnv96hsqxx90vcjbdyjhqpir3ll55q2n0j"))))
    (build-system gnu-build-system)
    (inputs
     `(("expat" ,expat)))

D gnu/packages/patches/gettext-msgunfmt.patch => gnu/packages/patches/gettext-msgunfmt.patch +0 -58
@@ 1,58 0,0 @@
From <http://git.savannah.gnu.org/cgit/gettext.git/patch/?id=5d3eeaa0d3b7f4f6932bd29d859925a940b69459>.

2015-03-11  Daiki Ueno  <ueno@gnu.org>

	msgunfmt: Check allocated size for static segment
	Reported by Max Lin in:
	http://lists.gnu.org/archive/html/bug-gettext/2015-03/msg00005.html
	* read-mo.c (get_sysdep_string): Check if the embedded segment
	size is valid, before adding it to the string length.

diff --git a/gettext-tools/src/read-mo.c b/gettext-tools/src/read-mo.c
index b97bbad..1c024a8 100644
--- a/gettext-tools/src/read-mo.c
+++ b/gettext-tools/src/read-mo.c
@@ -149,6 +149,7 @@ get_sysdep_string (const struct binary_mo_file *bfp, size_t offset,
   nls_uint32 s_offset;
 
   /* Compute the length.  */
+  s_offset = get_uint32 (bfp, offset);
   length = 0;
   for (i = 4; ; i += 8)
     {
@@ -158,9 +159,14 @@ get_sysdep_string (const struct binary_mo_file *bfp, size_t offset,
       nls_uint32 ss_length;
       nls_uint32 ss_offset;
       size_t ss_end;
+      size_t s_end;
       size_t n;
 
+      s_end = xsum (s_offset, segsize);
+      if (size_overflow_p (s_end) || s_end > bfp->size)
+        error (EXIT_FAILURE, 0, _("file \"%s\" is truncated"), bfp->filename);
       length += segsize;
+      s_offset += segsize;
 
       if (sysdepref == SEGMENTS_END)
         break;
@@ -175,7 +181,7 @@ get_sysdep_string (const struct binary_mo_file *bfp, size_t offset,
       ss_end = xsum (ss_offset, ss_length);
       if (size_overflow_p (ss_end) || ss_end > bfp->size)
         error (EXIT_FAILURE, 0, _("file \"%s\" is truncated"), bfp->filename);
-      if (!(ss_length > 0 && bfp->data[ss_offset + ss_length - 1] == '\0'))
+      if (!(ss_length > 0 && bfp->data[ss_end - 1] == '\0'))
         {
           char location[30];
           sprintf (location, "sysdep_segment[%u]", (unsigned int) sysdepref);
@@ -198,11 +204,8 @@ get_sysdep_string (const struct binary_mo_file *bfp, size_t offset,
       nls_uint32 sysdep_segment_offset;
       nls_uint32 ss_length;
       nls_uint32 ss_offset;
-      size_t s_end = xsum (s_offset, segsize);
       size_t n;
 
-      if (size_overflow_p (s_end) || s_end > bfp->size)
-        error (EXIT_FAILURE, 0, _("file \"%s\" is truncated"), bfp->filename);
       memcpy (p, bfp->data + s_offset, segsize);
       p += segsize;
       s_offset += segsize;