Hello community, here is the log from the commit of package elilo checked in at Thu Jul 31 21:25:55 CEST 2008. -------- --- arch/i386/elilo/elilo.changes 2008-02-28 17:49:01.000000000 +0100 +++ /mounts/work_src_done/STABLE/elilo/elilo.changes 2008-07-31 02:16:59.401536000 +0200 @@ -1,0 +2,11 @@ +Wed Jul 31 10:22:56 CEST 2008 - rw@suse.de + +- elilo.efi + * Update to final elilo-3.8 for uEFI support. (fate#301882) +- elilo.pl + * Preserve time-stamps but not permissions. (bnc#394331) + * Unconditionally strip deprecated 'read-only' from 'elilo.conf'. + * Support '$LIBEXECDIR' to please uEFI/x86_64 and + relocate efi-binaries from 'elilo' to 'efi'. (fate#301882) + +------------------------------------------------------------------- @@ -4 +15,2 @@ -- no strip for elilo.efi during install (unknown binary format) +- elilo.spec + * No strip for elilo.efi during install (unknown binary format). @@ -9 +21,2 @@ -- Revert last change. +- elilo.spec + * Revert last change. @@ -14 +27,9 @@ -- added gnu-efi-devel to buildreq +- elilo.spec + * Added gnu-efi-devel to buildreq. + +------------------------------------------------------------------- +Wed May 9 14:29:40 CEST 2007 - rw@suse.de + +- elilo.efi + * Reduce non-"command line" strings back to 512. (#256676) + * Fix another buffer overrun. (#256676) @@ -19 +40,2 @@ -- Disable stack protector. +- elilo.spec + * Disable stack protector. @@ -25,2 +47 @@ - * increase command line size to 2048 (as in >= 2.6.20-rc6-mm1) - (#242702) + * Increase command line size to 2048. (#242702) @@ -31 +52,2 @@ -- Fix spelling. +- elilo.efi + * Fix spelling. @@ -38 +60 @@ - (Fixed vmcode_name initialization in textmenu chooser) + (Fixed vmcode_name initialization in textmenu chooser) @@ -61 +83 @@ -- /sbin/elilo +- elilo.pl @@ -69 +91 @@ -- /sbin/elilo +- elilo.pl @@ -75 +97 @@ -- /sbin/elilo +- elilo.pl @@ -81 +103 @@ -- /sbin/elilo +- elilo.pl @@ -105 +127 @@ -- /sbin/elilo +- elilo.pl @@ -113 +135 @@ -- /sbin/elilo +- elilo.pl Old: ---- elilo-3.6-asm.diff elilo-3.6-MAC.diff elilo-3.6-spelling.diff elilo-3.6.src.tgz New: ---- elilo-3.8.tar.gz elilo-asm.diff elilo-avoid-tab.diff elilo-fix-possible-overflow.diff elilo-MAC.diff elilo-spelling.diff rpmlintrc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ elilo.spec ++++++ --- /var/tmp/diff_new_pack.t26089/_old 2008-07-31 21:25:28.000000000 +0200 +++ /var/tmp/diff_new_pack.t26089/_new 2008-07-31 21:25:28.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package elilo (Version 3.6) +# spec file for package elilo (Version 3.8) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -12,22 +12,25 @@ Name: elilo -Url: http://elilo.sourceforge.net/ Summary: EFI Linux Loader -Version: 3.6 -Release: 142 +Version: 3.8 +Release: 3 Group: System/Boot AutoReqProv: on PreReq: /usr/bin/perl License: GPL v2 or later -Source: http://mesh.dl.sourceforge.net/sourceforge/elilo/elilo-3.6.src.tgz +Url: http://elilo.sourceforge.net/ +Source: http://dl.sourceforge.net/elilo/elilo-3.8.tar.gz Source1: elilo.pl -Patch0: elilo-%{version}-asm.diff -Patch1: elilo-%{version}-MAC.diff -Patch2: elilo-%{version}-spelling.diff +Source2: rpmlintrc +Patch0: elilo-asm.diff +Patch1: elilo-MAC.diff +Patch2: elilo-spelling.diff Patch3: elilo-longer-commandline.diff +Patch4: elilo-fix-possible-overflow.diff +Patch5: elilo-avoid-tab.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: gnu-efi +BuildRequires: gnu-efi >= 3.0e %description The EFI Linux boot loader. @@ -47,7 +50,11 @@ %patch1 -p1 %patch2 %patch3 -p1 -perl -pe 's/\@EDITION\@/%{version}-%{release}/' < %{SOURCE1} > elilo.pl && +%patch4 -p1 +%patch5 -p1 +perl -pe 's{\@EDITION\@}{%{version}-%{release}}; + s{\@LIBEXECDIR\@}{%{_libexecdir}}' < %{SOURCE1} > elilo.pl && +perl -pi -e 's{/usr/lib}{%{_libexecdir}}' Make.defaults chmod 555 elilo.pl && touch -r %{SOURCE1} elilo.pl ! fgrep '%%{version}-%%{release}' elilo.pl @@ -58,11 +65,13 @@ touch -r elilo.pl elilo.8 %install -install -d $RPM_BUILD_ROOT/usr/lib/elilo $RPM_BUILD_ROOT/sbin -install -m 444 elilo.efi $RPM_BUILD_ROOT/usr/lib/elilo +install -d $RPM_BUILD_ROOT%{_libexecdir}/efi $RPM_BUILD_ROOT/sbin +install -m 444 elilo.efi $RPM_BUILD_ROOT%{_libexecdir}/efi install tools/eliloalt $RPM_BUILD_ROOT/sbin install -p -m 555 elilo.pl $RPM_BUILD_ROOT/sbin/elilo -#install -D -p elilo.8 $RPM_BUILD_ROOT/usr/share/man/man8/elilo.8 +%if 0 +install -D -p elilo.8 $RPM_BUILD_ROOT/usr/share/man/man8/elilo.8 +%endif %clean rm -fr $RPM_BUILD_ROOT @@ -74,26 +83,44 @@ %files %defattr(-, root, root) %doc README README.* TODO docs/*.txt -/usr/lib/elilo +%{_libexecdir}/efi /sbin/elilo /sbin/eliloalt -#/usr/share/man/man8/* +%if 0 +/usr/share/man/man8/* +%endif %changelog +* Thu Jul 31 2008 rw@suse.de +- elilo.efi + * Update to final elilo-3.8 for uEFI support. (fate#301882) +- elilo.pl + * Preserve time-stamps but not permissions. (bnc#394331) + * Unconditionally strip deprecated 'read-only' from 'elilo.conf'. + * Support '$LIBEXECDIR' to please uEFI/x86_64 and + relocate efi-binaries from 'elilo' to 'efi'. (fate#301882) * Thu Feb 28 2008 ro@suse.de -- no strip for elilo.efi during install (unknown binary format) +- elilo.spec + * No strip for elilo.efi during install (unknown binary format). * Sun May 27 2007 schwab@suse.de -- Revert last change. +- elilo.spec + * Revert last change. * Sun May 27 2007 ro@suse.de -- added gnu-efi-devel to buildreq +- elilo.spec + * Added gnu-efi-devel to buildreq. +* Wed May 09 2007 rw@suse.de +- elilo.efi + * Reduce non-"command line" strings back to 512. (#256676) + * Fix another buffer overrun. (#256676) * Fri Feb 23 2007 schwab@suse.de -- Disable stack protector. +- elilo.spec + * Disable stack protector. * Tue Feb 06 2007 bwalle@suse.de - elilo.efi - * increase command line size to 2048 (as in >= 2.6.20-rc6-mm1) - (#242702) + * Increase command line size to 2048. (#242702) * Fri Nov 10 2006 schwab@suse.de -- Fix spelling. +- elilo.efi + * Fix spelling. * Thu Feb 02 2006 rw@suse.de - elilo.efi * Update to final 3.6 @@ -108,18 +135,18 @@ - elilo.efi * Fix vmcode_name initialization in textmenu chooser. (#140519) * Fri Dec 09 2005 rw@suse.de -- /sbin/elilo +- elilo.pl * Fix formatting of man-page. * Wed Dec 07 2005 rw@suse.de - elilo.efi * Update to 3.5-pre2. -- /sbin/elilo +- elilo.pl * Make "best effort" instead of giving up early. * Sat Aug 13 2005 schwab@suse.de -- /sbin/elilo +- elilo.pl * Check that the default label is defined. * Fri Aug 05 2005 schwab@suse.de -- /sbin/elilo +- elilo.pl * Barf on duplicate labels. * Wed Apr 13 2005 schwab@suse.de - elilo.efi @@ -131,12 +158,12 @@ - elilo.efi * Fix simple-chooser (#45493) * Thu May 27 2004 rw@suse.de -- /sbin/elilo +- elilo.pl * Make all image-objects (kernel/initrd) *optional* by default (#41315) * Mon Feb 23 2004 rw@suse.de - elilo.efi * Use '$RPM_OPT_FLAGS' with '-fno-strict-aliasing' appended. -- /sbin/elilo +- elilo.pl * Take care of FPSWA. * Try to avoid copying the same files more than once. * Mon Nov 24 2003 rw@suse.de ++++++ elilo-3.6-asm.diff -> elilo-asm.diff ++++++ ++++++ elilo-avoid-tab.diff ++++++ diff -urp elilo-3.8/config.c elilo-3.8-tab/config.c --- elilo-3.8/config.c 2008-07-29 23:22:07.637647427 +0200 +++ elilo-3.8-tab/config.c 2008-07-31 01:24:31.346046245 +0200 @@ -897,10 +897,10 @@ print_label_list(VOID) { boot_image_t *img, *dfl = global_config.default_image; - if (dfl) Print(L"\t%s\n", dfl->label); + if (dfl) Print(L" %s\n", dfl->label); for (img = image_list; img; img = img->next) { - if (img != dfl) Print(L"\t%s\n", img->label); + if (img != dfl) Print(L" %s\n", img->label); } } ++++++ elilo-fix-possible-overflow.diff ++++++ From: Bernhard Walle <bwalle@suse.de> Subject: [PATCH] Fix possible array length overflow References: 256676 Found by dan.yeisley@unisys.com. Signed-off-by: Bernhard Walle <bwalle@suse.de> --- choosers/simple.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/choosers/simple.c +++ b/choosers/simple.c @@ -283,8 +283,10 @@ restart: } if (elilo_opt.prompt) { - ret = select_kernel(buffer, sizeof(buffer)); + ret = select_kernel(buffer, CMDLINE_MAXLEN); if (ret == -1) return -1; + + /* this function takes really the number of bytes ... */ argc = argify(buffer,sizeof(buffer), argv); index = 0; } ++++++ elilo-longer-commandline.diff ++++++ --- /var/tmp/diff_new_pack.t26089/_old 2008-07-31 21:25:28.000000000 +0200 +++ /var/tmp/diff_new_pack.t26089/_new 2008-07-31 21:25:28.000000000 +0200 @@ -3,25 +3,85 @@ Increase command line size to 2048 chars. --- - elilo.c | 2 +- - elilo.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + choosers/simple.c | 10 +++++----- + choosers/textmenu.c | 6 +++--- + config.c | 6 +++--- + elilo.c | 2 +- + elilo.h | 3 ++- + 5 files changed, 14 insertions(+), 13 deletions(-) -Index: b/elilo.h -=================================================================== ---- a/elilo.h -+++ b/elilo.h -@@ -57,7 +57,7 @@ - #define ELILO_DEFAULT_TIMEOUT ELILO_TIMEOUT_INFINITY - #define ELILO_TIMEOUT_INFINITY (~0UL) +--- a/choosers/simple.c ++++ b/choosers/simple.c +@@ -36,8 +36,8 @@ static VOID + display_label_info(CHAR16 *name) + { + CHAR16 *desc; +- CHAR16 initrd_name[CMDLINE_MAXLEN]; +- CHAR16 vmcode_name[CMDLINE_MAXLEN]; ++ CHAR16 initrd_name[PATHNAME_MAXLEN]; ++ CHAR16 vmcode_name[PATHNAME_MAXLEN]; + CHAR16 options_tmp[CMDLINE_MAXLEN]; + CHAR16 options[CMDLINE_MAXLEN]; + CHAR16 kname[FILENAME_MAXLEN]; +@@ -248,10 +248,10 @@ simple_choose(CHAR16 **argv, INTN argc, + # define BOOT_IMG_STR L"BOOT_IMAGE=" + CHAR16 buffer[CMDLINE_MAXLEN]; + CHAR16 alt_buffer[CMDLINE_MAXLEN]; +- CHAR16 initrd_name[CMDLINE_MAXLEN]; +- CHAR16 vmcode_name[CMDLINE_MAXLEN]; ++ CHAR16 initrd_name[PATHNAME_MAXLEN]; ++ CHAR16 vmcode_name[PATHNAME_MAXLEN]; + CHAR16 args[CMDLINE_MAXLEN]; +- CHAR16 devname[CMDLINE_MAXLEN]; ++ CHAR16 devname[PATHNAME_MAXLEN]; + CHAR16 dpath[FILENAME_MAXLEN]; + CHAR16 *slash_pos, *colon_pos, *backslash_pos; + UINTN len; +--- a/choosers/textmenu.c ++++ b/choosers/textmenu.c +@@ -362,10 +362,10 @@ textmenu_choose(CHAR16 **argv, INTN argc + { + # define BOOT_IMG_STR L"BOOT_IMAGE=" + CHAR16 label[CMDLINE_MAXLEN]; +- CHAR16 initrd_name[CMDLINE_MAXLEN]; +- CHAR16 vmcode_name[CMDLINE_MAXLEN]; ++ CHAR16 initrd_name[PATHNAME_MAXLEN]; ++ CHAR16 vmcode_name[PATHNAME_MAXLEN]; + CHAR16 args[CMDLINE_MAXLEN]; +- CHAR16 devname[CMDLINE_MAXLEN]; ++ CHAR16 devname[PATHNAME_MAXLEN]; + CHAR16 dpath[FILENAME_MAXLEN]; + CHAR16 *slash_pos, *colon_pos, *backslash_pos; + UINTN len; +--- a/config.c ++++ b/config.c +@@ -51,7 +51,7 @@ + */ + #define ELILO_DEFAULT_CONFIG L"elilo.conf" --#define CMDLINE_MAXLEN 512 /* needed by ia32 */ -+#define CMDLINE_MAXLEN 2048 /* needed by ia32 */ - #define FILENAME_MAXLEN 256 - #define MAX_ARGS 256 - /* Just pick an arbitrary number that's high enough for now :o) */ -Index: b/elilo.c -=================================================================== +-#define MAX_STRING CMDLINE_MAXLEN ++#define MAX_STRING 512 + #define CONFIG_BUFSIZE 512 /* input buffer size */ + + /* +@@ -66,7 +66,7 @@ typedef struct boot_image { + struct boot_image *next; + CHAR16 label[MAX_STRING]; + CHAR16 kname[FILENAME_MAXLEN]; +- CHAR16 options[MAX_STRING]; ++ CHAR16 options[CMDLINE_MAXLEN]; + CHAR16 initrd[FILENAME_MAXLEN]; + CHAR16 vmcode[FILENAME_MAXLEN]; + CHAR16 root[FILENAME_MAXLEN]; +@@ -95,7 +95,7 @@ typedef struct { + CHAR16 root[FILENAME_MAXLEN]; /* globally defined root fs */ + CHAR16 initrd[FILENAME_MAXLEN];/* globally defined initrd */ + CHAR16 vmcode[FILENAME_MAXLEN];/* globally defined boot-time module */ +- CHAR16 options[MAX_STRING]; ++ CHAR16 options[CMDLINE_MAXLEN]; + CHAR16 default_image_name[MAX_STRING]; + CHAR16 message_file[MAX_MESSAGES][FILENAME_MAXLEN]; + CHAR16 chooser[FILENAME_MAXLEN];/* which image chooser to use */ --- a/elilo.c +++ b/elilo.c @@ -87,7 +87,7 @@ do_kernel_load(CHAR16 *kname, kdesc_t *k @@ -33,3 +93,16 @@ /* * Do the vm image switch here +--- a/elilo.h ++++ b/elilo.h +@@ -57,7 +57,8 @@ + #define ELILO_DEFAULT_TIMEOUT ELILO_TIMEOUT_INFINITY + #define ELILO_TIMEOUT_INFINITY (~0UL) + +-#define CMDLINE_MAXLEN 512 /* needed by ia32 */ ++#define CMDLINE_MAXLEN 2048 ++#define PATHNAME_MAXLEN 512 + #define FILENAME_MAXLEN 256 + #define MAX_ARGS 256 + /* Just pick an arbitrary number that's high enough for now :o) */ + ++++++ elilo-MAC.diff ++++++ diff -purN elilo-3.5-pre2/glue_netfs.c elilo-3.5-MAC/glue_netfs.c --- elilo-3.5-pre2/glue_netfs.c 2004-02-20 23:30:37.000000000 +0100 +++ elilo-3.5-MAC/glue_netfs.c 2005-12-07 15:19:45.655191368 +0100 @@ -61,6 +61,18 @@ static CHAR16 netfs_default_path[FILENAM static CHAR16 *hexa=L"0123456789ABCDEF"; static VOID +convert_mac2hex(UINT8 *hw_addr,INTN l, CHAR16 *str) +{ + UINTN i; + for (i=0 ; i < l; i++) { + str[3*i] = hexa[(hw_addr[i] & 0xf0)>>4]; + str[3*i+1] = hexa[hw_addr[i] & 0x0f]; + str[3*i+2] = ':'; + } + str[3*l-1]='\0'; +} + +static VOID convert_ip2hex(UINT8 *ip, INTN l, CHAR16 *str) { UINTN i; @@ -197,6 +209,12 @@ netfs_setdefaults(VOID *intf, config_fil StrnCpy(config[6].fname, str, maxlen-1); StrnCpy(config[6].fname+2, CONFIG_EXTENSION, 6); + + /* use the MAC address as a possible file name as well */ + convert_mac2hex(info.hw_addr,6,str); + StrnCpy(config[7].fname, str, maxlen-1); + StrnCpy(config[7].fname+17, CONFIG_EXTENSION, 6); + #else StrnCpy(config[0].fname, NETFS_DEFAULT_CONFIG, maxlen-1); config[0].fname[maxlen-1] = CHAR_NULL; ++++++ elilo.pl ++++++ --- arch/i386/elilo/elilo.pl 2005-12-09 12:46:06.000000000 +0100 +++ /mounts/work_src_done/STABLE/elilo/elilo.pl 2008-07-30 11:36:51.887804000 +0200 @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# $Id: elilo.pl,v 0.12 2005/12/09 11:46:06 rw Exp $ +# $Id: elilo.pl,v 0.14 2008/07/30 09:36:48 rw Exp $ use strict; my $C = $0; $C =~ s%^.*/%%; @@ -8,7 +8,8 @@ my $Edition = q(@EDITION@); my $MPold = "$dbg/boot"; my $MPnew = "$dbg/boot/efi"; -my $Dlib = "$dbg/usr/lib/elilo"; +my $Dlibold = "$dbg@LIBEXECDIR@/elilo"; +my $Dlib = "$dbg@LIBEXECDIR@/efi"; my $Fconf = "elilo.conf"; my $Sconf = "$dbg/etc/" . $Fconf; @@ -35,7 +36,7 @@ $[ = 0; sub Version() { - my $v = q($Revision: 0.12 $ ); + my $v = q($Revision: 0.14 $ ); $v =~ s/^\$ Rev.*:\ ([0-9.]+)\ \$\ /$1/x; $v .= " (part of elilo-$Edition)" if ( $Edition ne "\@EDITION\@" ); print "$C version $v\n"; @@ -131,6 +132,8 @@ } elsif (m%^\s*default\s*=\s*(\S+)%) { $default_label = $1; $default_loc = $#Out + 1; + } elsif (m%^\s*read-only\s*$%) { + $_ = "#read-only # Deprecated! (May be forced by appending 'ro')\n"; } push @Out, $_; } @@ -194,26 +197,33 @@ my( $f, $o, $s, $d) = @_; my @C = ( "install", $o, $s, $d); + if ( $o eq "-p" ) { + @C = ( "cp", "--preserve=timestamps", $s, $d); + } System( $f, @C); } sub InstallFPSWA($) { my ( $d) = @_; + my $Dfpswa = $Dlib; + $d .= "/efi/Intel Firmware"; - return 0 unless ( -r "$Dlib/fpswa.efi" ); + $Dfpswa = $Dlibold unless ( -r "$Dfpswa/fpswa.efi" ); + + return 0 unless ( -r "$Dfpswa/fpswa.efi" ); my $head = "## fpswa: Floating Point Software Assist\n"; if ( -d $d && -r "$d/fpswa.efi" ) { # check, if we need to update and failing that do nothing?! - my $c = "$Dlib/fpswa-cmp-version"; + my $c = "$Dfpswa/fpswa-cmp-version"; if ( -x $c ) { - my $chk = `$c "$d/fpswa.efi" "$Dlib/fpswa.efi"`; + my $chk = `$c "$d/fpswa.efi" "$Dfpswa/fpswa.efi"`; if ( $chk =~ /older/ ) { Info( 1, $head . "## Update '$d/fpswa.efi'.\n"); Info( 2, "## $chk"); - Install( 0, "-p", "$Dlib/fpswa.efi", $d); + Install( 0, "-p", "$Dfpswa/fpswa.efi", $d); } else { Info( 1, $head . "## Do NOT update '$d/fpswa.efi'.\n"); @@ -222,7 +232,7 @@ } } else { use File::Compare; - if ( compare( "$d/fpswa.efi", "$Dlib/fpswa.efi") == 0 ) { + if ( compare( "$d/fpswa.efi", "$Dfpswa/fpswa.efi") == 0 ) { Info( 2, $head . "## Already installed.\n"); } else { @@ -234,7 +244,7 @@ } else { Info( 1, $head . "## Install 'fpswa.efi' to '$d'.\n"); System( 0, "mkdir", $d) unless ( -d $d ); - Install( 0, "-p", "$Dlib/fpswa.efi", $d); + Install( 0, "-p", "$Dfpswa/fpswa.efi", $d); } } ++++++ elilo-spelling.diff ++++++ --- config.c +++ config.c @@ -580,7 +580,7 @@ */ tok = get_token(numstr, MAX_STRING); if (tok != TOK_EQUAL) { - config_error(L"Option %s expects an equal signal + value", p->name); + config_error(L"Option %s expects an equal sign + value", p->name); return -1; } @@ -673,7 +673,7 @@ */ tok = get_token(str, maxlen); if (tok != TOK_EQUAL) { - config_error(L"Option %s expects an equal signal + %s", p->name, msg); + config_error(L"Option %s expects an equal sign + %s", p->name, msg); return -1; } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org