Hello community,
here is the log from the commit of package emacs
checked in at Fri Nov 30 16:11:38 CET 2007.
--------
--- emacs/emacs.changes 2007-11-05 13:56:15.000000000 +0100
+++ /mounts/work_src_done/STABLE/emacs/emacs.changes 2007-11-22 17:04:06.000000000 +0100
@@ -1,0 +2,6 @@
+Thu Nov 22 14:23:04 CET 2007 - schwab@suse.de
+
+- Fix buffer overflow in format [#342158].
+- Remove obsolete patches.
+
+-------------------------------------------------------------------
New:
----
emacs-22.1-format.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ emacs.spec ++++++
--- /var/tmp/diff_new_pack.f14553/_old 2007-11-30 16:11:23.000000000 +0100
+++ /var/tmp/diff_new_pack.f14553/_new 2007-11-30 16:11:23.000000000 +0100
@@ -20,7 +20,7 @@
Provides: ge_site ge_exec emacs-url Mule-UCS emacs-calc erc
AutoReqProv: on
Version: 22.1
-Release: 56
+Release: 62
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Summary: GNU Emacs Base Package
Source: emacs-22.1.tar.bz2
@@ -45,6 +45,7 @@
Patch13: emacs-22.0.99-s390x.dif
Patch14: emacs-22.1-conf.diff
Patch15: emacs-22.1-CVE-2007-5795.dif
+Patch16: emacs-22.1-format.diff
%{expand: %%global _exec_prefix %(type -p pkg-config &>/dev/null && pkg-config --variable prefix x11 || echo /usr/X11R6)}
%if "%_exec_prefix" == "/usr/X11R6"
%define _x11lib %{_exec_prefix}/%{_lib}
@@ -214,6 +215,7 @@
%patch13 -p0 -b .s390x
%patch14
%patch15 -p0 -b .CVE20075795
+%patch16
%patch
if test ! -e $HOME/.mh_profile && type -p install-mh > /dev/null 2>&1; then
install-mh -auto < /dev/null
@@ -3188,7 +3190,11 @@
/usr/share/emacs/%{version}/lisp/x-dnd.el.gz
/usr/share/emacs/%{version}/lisp/xml.el.gz
/usr/share/emacs/%{version}/lisp/xt-mouse.el.gz
+
%changelog
+* Thu Nov 22 2007 - schwab@suse.de
+- Fix buffer overflow in format [#342158].
+- Remove obsolete patches.
* Mon Nov 05 2007 - werner@suse.de
- Fix insufficient safe mode checks (bug #339033, CVE-2007-5795)
* Fri Sep 07 2007 - schwab@suse.de
++++++ emacs-22.0.99.dif ++++++
--- /var/tmp/diff_new_pack.f14553/_old 2007-11-30 16:11:24.000000000 +0100
+++ /var/tmp/diff_new_pack.f14553/_new 2007-11-30 16:11:24.000000000 +0100
@@ -1147,7 +1147,7 @@
+;; Ende von linux.el
--- site-lisp/term/locale.el
+++ site-lisp/term/locale.el 2007-06-04 15:26:38.703969552 +0200
-@@ -0,0 +1,37 @@
+@@ -0,0 +1,16 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; term/locale.el for site-lisp path
+;;; Copyright (c) 1996-2003 SuSE Linux AG Nuernberg, Germany.
@@ -1155,27 +1155,6 @@
+;;;
+;;; Author: Werner Fink , No warranty of any kind
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+;;
-+;; Umlaute
-+;; -------
-+
-+(let* ((tmp (shell-command-to-string "locale charmap"))
-+ (tmp (substring tmp 0 (string-match "\[ \t\n\]" tmp)))
-+ (tmp (downcase tmp)))
-+ (when (coding-system-p (intern tmp))
-+ (set-keyboard-coding-system (intern tmp))
-+ (set-terminal-coding-system (intern tmp))
-+ (set-default-coding-systems (intern tmp))))
-+;; Set this only if no default is given
-+(unless (terminal-coding-system)
-+ (set-terminal-coding-system 'iso-latin-9))
-+;; Set input mode
-+(let ((value (current-input-mode)))
-+ (set-input-mode (nth 0 value)
-+ (nth 1 value)
-+ (terminal-coding-system)
-+ ;; This quit value is optional
-+ (nth 3 value)))
+
+(add-hook 'term-setup-hook (function (lambda ()
+ (load "term/func-keys" t t))))
@@ -1280,40 +1259,6 @@
exit (0);
}
---- src/process.c
-+++ src/process.c 2007-05-15 19:29:13.505217000 +0200
-@@ -528,8 +528,22 @@ status_message (p)
- static int
- allocate_pty ()
- {
-- register int c, i;
- int fd;
-+#ifdef UNIX98_PTYS
-+ if ((fd = getpt ()) < 0)
-+ return -1;
-+
-+ if (grantpt (fd) < 0 ||
-+ unlockpt (fd) < 0 ||
-+ ptsname_r (fd, pty_name, sizeof pty_name))
-+ {
-+ close (fd);
-+ return -1;
-+ }
-+ setup_pty (fd);
-+ return fd;
-+#else
-+ register int c, i;
-
- #ifdef PTY_ITERATION
- PTY_ITERATION
-@@ -607,6 +621,7 @@ allocate_pty ()
- }
- }
- return -1;
-+#endif /* !UNIX98_PTYS */
- }
- #endif /* HAVE_PTYS */
-
--- src/m/hp800.h
+++ src/m/hp800.h 2007-05-15 19:33:25.880021000 +0200
@@ -71,7 +71,7 @@ Boston, MA 02110-1301, USA. */
++++++ emacs-22.1-format.diff ++++++
2007-11-15 Andreas Schwab
* editfns.c (Fformat): Correctly format EMACS_INT values.
Also take precision into account when formatting an integer.
Index: src/editfns.c
================================================================================
--- src/editfns.c
+++ src/editfns.c
@@ -3543,8 +3543,10 @@ usage: (format STRING &rest OBJECTS) */
precision[n+1] = 10 * precision[n+1] + *format - '0';
}
- if (format - this_format_start + 1 > longest_format)
- longest_format = format - this_format_start + 1;
+ /* Extra +1 for 'l' that we may need to insert into the
+ format. */
+ if (format - this_format_start + 2 > longest_format)
+ longest_format = format - this_format_start + 2;
if (format == end)
error ("Format string ends in middle of format specifier");
@@ -3605,7 +3607,7 @@ usage: (format STRING &rest OBJECTS) */
&& *format != 'i' && *format != 'X' && *format != 'c')
error ("Invalid format operation %%%c", *format);
- thissize = 30;
+ thissize = 30 + (precision[n] > 0 ? precision[n] : 0);
if (*format == 'c')
{
if (! SINGLE_BYTE_CHAR_P (XINT (args[n]))
@@ -3803,23 +3805,40 @@ usage: (format STRING &rest OBJECTS) */
format - this_format_start);
this_format[format - this_format_start] = 0;
- if (INTEGERP (args[n]))
+ if (format[-1] == 'e' || format[-1] == 'f' || format[-1] == 'g')
+ sprintf (p, this_format, XFLOAT_DATA (args[n]));
+ else
{
- if (format[-1] == 'd')
- sprintf (p, this_format, XINT (args[n]));
- /* Don't sign-extend for octal or hex printing. */
+ if (sizeof (EMACS_INT) > sizeof (int)
+ && format[-1] != 'c')
+ {
+ /* Insert 'l' before format spec. */
+ this_format[format - this_format_start]
+ = this_format[format - this_format_start - 1];
+ this_format[format - this_format_start - 1] = 'l';
+ this_format[format - this_format_start + 1] = 0;
+ }
+
+ if (INTEGERP (args[n]))
+ {
+ if (format[-1] == 'c')
+ sprintf (p, this_format, (int) XINT (args[n]));
+ else if (format[-1] == 'd')
+ sprintf (p, this_format, XINT (args[n]));
+ /* Don't sign-extend for octal or hex printing. */
+ else
+ sprintf (p, this_format, XUINT (args[n]));
+ }
+ else if (format[-1] == 'c')
+ sprintf (p, this_format, (int) XFLOAT_DATA (args[n]));
+ else if (format[-1] == 'd')
+ /* Maybe we should use "%1.0f" instead so it also works
+ for values larger than MAXINT. */
+ sprintf (p, this_format, (EMACS_INT) XFLOAT_DATA (args[n]));
else
- sprintf (p, this_format, XUINT (args[n]));
+ /* Don't sign-extend for octal or hex printing. */
+ sprintf (p, this_format, (EMACS_UINT) XFLOAT_DATA (args[n]));
}
- else if (format[-1] == 'e' || format[-1] == 'f' || format[-1] == 'g')
- sprintf (p, this_format, XFLOAT_DATA (args[n]));
- else if (format[-1] == 'd')
- /* Maybe we should use "%1.0f" instead so it also works
- for values larger than MAXINT. */
- sprintf (p, this_format, (EMACS_INT) XFLOAT_DATA (args[n]));
- else
- /* Don't sign-extend for octal or hex printing. */
- sprintf (p, this_format, (EMACS_UINT) XFLOAT_DATA (args[n]));
if (p > buf
&& multibyte
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org