diff --git a/Agreement b/Agreement index 53d20b1..ac226a2 100644 --- a/Agreement +++ b/Agreement @@ -1,2 +1,4 @@ +http://www.research.att.com/sw/download/ +http://www.research.att.com/sw/download/beta/ User: `I accept www.opensource.org/licenses/cpl' Password: `.' diff --git a/INIT.2009-03-10.tar.bz2 b/INIT.2009-03-10.tar.bz2 deleted file mode 100644 index dfe1aa0..0000000 --- a/INIT.2009-03-10.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:50e32ef391c8fc7a432ec269b4998c2c977b6a5a57ff549d843f7512a2603758 -size 267618 diff --git a/INIT.2009-06-30.tar.bz2 b/INIT.2009-06-30.tar.bz2 new file mode 100644 index 0000000..1db5184 --- /dev/null +++ b/INIT.2009-06-30.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7915fccde4559aaa965da5c5824deddc929c0e21f8b023a9e941f7b9a538feec +size 270826 diff --git a/ast-ksh.2009-03-10.tar.bz2 b/ast-ksh.2009-03-10.tar.bz2 deleted file mode 100644 index 5067da8..0000000 --- a/ast-ksh.2009-03-10.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8cfab973cab3c8a81fb23d4c8d805110f5091401ead9b0e23b6f21fe45b6d895 -size 1416261 diff --git a/ast-ksh.2009-06-30.tar.bz2 b/ast-ksh.2009-06-30.tar.bz2 new file mode 100644 index 0000000..a438ce4 --- /dev/null +++ b/ast-ksh.2009-06-30.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ce968695698a22a37eff9b98e0a0cbfa7b8d7b727f24e4b70c83d06f3de9a28 +size 1450359 diff --git a/ksh.changes b/ksh.changes index 5d49893..6161bdf 100644 --- a/ksh.changes +++ b/ksh.changes @@ -1,3 +1,63 @@ +------------------------------------------------------------------- +Tue Aug 4 14:37:37 CEST 2009 - werner@suse.de + +- Work around three memory leaks (bnc#520598) +- Use workaround for bug in s390 for all architecture where named + pipes aka fifos are in blocking mode which cause read failures + in some sort of shell code test cases +- Update to 2009-06-30 beta test of ksh93t+ for bug fixes + + 09-06-22 The default width for typeset -X has been changed so that there + should be no loss of precision when converting to a string. + 09-06-19 A bug in the printing of array elements for binary variables with + printf %B has been fixed. + 09-06-19 A bug which caused a core dump with trap DEBUG set with an array + assignment with no elements has been fixed. + 09-06-19 A bug with read with typeset -b -Z has been fixed. + 09-06-19 Two bugs related to read -b for array variables has been fixed. + 09-06-19 A bug with typeset for compound variables containing arrays of + compound variables has been fixed. + 09-06-18 A bug in appending a compound variable to a an indexed array of + compound variables has been fixed. + 09-06-18 A bug which occurs when appending a compound variable to an indexed + array element has been fixed. + 09-06-17 A bug in typeset -m when moving a local compound variable to a + global compound variable via a name reference has been fixed. + 09-06-17 A bug in appending to nodes of an array of compound variables when + addressing them via nameref has been fixed. + 09-06-17 A bug in typeset -p var, when var is an array of compound variables + in which the output only contained on array element has been fixed. + 09-06-17 The prefix expansion ${!y.@} now works when y is a name + reference to an element of an array. + 09-06-12 A bug in vi edit mode in which hitting the up arrow key at the + end of a line longer than 40 characters which caused a core dump + has been fixed. + 09-06-11 A bug in which "eval non-builtin &" would create two processes, + one for the & and another for non-builtin has been fixed. + 09-06-08 When var is an identifier and is unset, ${var} no longer tries to + run command substitution on the command var. + 09-06-08 Process substitution arguments of the form <(command) can now be + used following the < redirection operator to redirect from command. + 09-05-13 A bug in which redirections of the form 2>&1 1>&5 inside command + substitution could cause the command substitution to hang has been + fixed. + 09-05-12 To conform with POSIX, the -u option only checks for unset variables + and subscript elements rather than checking for all parameters. + 09-05-12 A bug which could cause a core dump when a variable whose name + begins with a . was referenced as part of a name reference inside + a function has been fixed. + 09-05-01 A bug that caused a core dump when SIGWINCH was received and + both vi and emacs mode were off has been fixed. + 09-04-22 Default alias compound='typeset -C' added. + 09-04-15 A bug that caused ${...;} to hang for large files has ben fixed. + 09-04-08 A change was made in the -n option which printed out an incorrect + warning with <>. + 09-04-05 A bug in handling new-lines with read -n has been fixed. + 09-03-31 A bug in which a nested command substitution with redirections could + leave a file descriptor open has been fixed. + 09-03-17 The sleep(1) builtin now accept and ISO 8601 PnYnMnDTnHnMnS + duration or date(1) compatible date/time operand. + ------------------------------------------------------------------- Fri Jun 19 10:35:46 CEST 2009 - coolo@novell.com diff --git a/ksh.spec b/ksh.spec index 96e7f44..b5e95db 100644 --- a/ksh.spec +++ b/ksh.spec @@ -26,11 +26,11 @@ Group: System/Shells PreReq: /bin/ln /bin/rm /etc/bash.bashrc /bin/true AutoReqProv: on Version: 93t -Release: 12 +Release: 13 Summary: Korn Shell BuildRoot: %{_tmppath}/%{name}-%{version}-build -Source: INIT.2009-03-10.tar.bz2 -Source1: ast-ksh.2009-03-10.tar.bz2 +Source: INIT.2009-06-30.tar.bz2 +Source1: ast-ksh.2009-06-30.tar.bz2 Source2: ast-open-locale.2008-07-25.tar.bz2 Source20: Agreement Source21: Warning @@ -51,7 +51,7 @@ Patch11: ksh93-signals.dif Patch12: ksh93-limits.dif Patch14: ksh93-ia64.dif Patch15: ksh93-s390.dif -Patch16: ksh93-subshell.dif +Patch16: ksh93-memleak.dif %global use_suid_exe 0 %global use_locale 0 @@ -115,15 +115,13 @@ find share/ -type d -a -empty | xargs -r rm -vrf %ifarch ia64 %patch14 %endif -%ifarch s390 s390x %patch15 -%endif %patch16 %build -# This package failed when testing with -Wl,-as-needed being default. -# So we disable it here, if you want to retest, just delete this comment and the line below. -export SUSE_ASNEEDED=0 + # This package failed when testing with -Wl,-as-needed being default. + # So we disable it here, if you want to retest, just delete this comment and the line below. + export SUSE_ASNEEDED=0 test -n "${!LC_*}" && unset "${!LC_*}" cflags () { @@ -157,6 +155,7 @@ export SUSE_ASNEEDED=0 FEATURE="$FEATURE -DSH_CMDLIB_DIR=\\\"/%{_lib}/ast/bin\\\"" FEATURE="$FEATURE -DDEFSHELL=\\\"/bin/ksh\\\"" FEATURE="$FEATURE -DTHISPROG=\\\"/%{_lib}/ast/bin/suid_exec\\\"" + FEATURE="$FEATURE -D_AST_std_malloc=0 -D_map_malloc=1" # # echo 'int main () { return !(sizeof(void*) >= 8); }' | gcc -x c -o test64 - @@ -394,553 +393,3 @@ fi %{_includedir}/ast/ %changelog -* Fri Jun 19 2009 coolo@novell.com -- disable as-needed for this package as it fails to build with it -* Mon May 25 2009 werner@suse.de -- Assigning to SECONDS in a subshell causes crash (bnc#502622) -* Mon Feb 16 2009 werner@suse.de -- Update to 2009-03-10 beta test of ksh93t+ for bug fixes - 09-03-10 If a variable that was left or right justified or zero-filled was - changed with a typeset statement that was left or right justified - or zero-filled, then the original justification no longer affects - the result. - 09-03-10 A bug in the handling of traps when the last command in a script - is a subshell grouping command has been fixed. - 09-03-03 A bug in which an expansion of the form ${!prefix@} could generate - an exception after the return from a function has been fixed. -- Update to 2009-02-02 beta test of ksh93t+ for bug fixes (bnc#472889): - 09-02-02 A bug in restricted mode in which the value of ENV could be - changed from within a function has been fixed. - 09-02-02 A bug in which an erroneous message indicating that a process - terminated with a coredump has been fixed. - 09-02-02 The exit status when exit was called without an argument from - a signal handler was incorrect and has been fixed. - 09-02-02 A bug in which a function autoloaded in a subshell could cause - a core dump when the subshell completed has been fixed. - 09-02-02 A bug in which 2>&1 inside a command substitution wasn't working - correctly has been fixed. - 09-02-02 A bug in the call stack of arithmetic function with 2 args - returning int has been fixed. - 09-01-30 A bug in which 'eval print \$0' inside a function was giving the - wrong value for $0 has been fixed. - 09-01-28 A bug in which a command substitution could return an exit status - of 127 when the pipefail option is enabled has been fixed. -* Tue Feb 10 2009 werner@suse.de -- Update to 2009-01-20 beta test of ksh93t+ for bug fixes (bnc#472889): - 09-01-20 A bug in which the exit status specified in an exit trap was - not used when a process terminated with a signal has been fixed. - 09-01-19 A bug in which a signal whose default action is to terminate - a process could be ingored when the process is running a sub-shell - has been fixed. - 09-01-19 A bug in which sending SIGWINCH to a process that reads from a pipe - could cause a memory fault has been fixed. - 09-01-13 A bug in which background jobs and pipelines that were not waited - for could, in rare instantes, cause the shell to go into an infinite - loop or fail has been fixed. - 09-01-06 A bug in indexed arrays of compound variables in which referencing - non-existant sub-variable in an arithmetic expression could cause - the sub-variable to be created has been fixed. - 09-01-05 A bug in which the \ character did not escape extened regular - expression pattern characters has been fixed. - 08-12-24 A bug in which killing the last element of a pipe did not cause - a write to the pipe to generate a SIGPIPE has been fixed. - 08-12-19 A bug which could cause command substitution to hang when the - last element of a pipeline in a command substitution was a built-in - and the output was more that PIPE_BUFF. - 08-12-18 A bug which occurs when a here documented marker embedded in a - command substitution occurs on a buffer boundary has been fixed. - 08-12-17 A bug in the output of typeset -p for variables that had attributes - but did not have a value has been fixed. - 08-12-16 A bug in which a name reference to a name reference variable that - references an array element has been fixed. - 08-12-16 A bug in which a variable given both the -A and -C attribute along - with an initial assignment didn't work correctly has been fixed. -- Initialize flag variable for job handling -* Wed Dec 17 2008 werner@suse.de -- Add workaround for bug in s390 architecture where named pipes aka - fifos are in blocking mode which cause read failures in some sort - of shell code test cases -* Wed Dec 17 2008 werner@suse.de -- Add workaround for bug in glibc with signbit() macro that is that - the inlined part for long doubles does not work on IA64 -* Mon Dec 15 2008 werner@suse.de -- Switch to 2008-12-12 beta test of ksh93t+ for bug fixes: - 08-12-10 The [[ -t fd ]] test was fixed to handle fd>9. - 08-12-10 A bug where function stack misalignment could cause a - bus error has been fixed. - 08-12-07 A bug in typeset -m which occured when the target node - was an associative array element has been fixed. - 08-12-04 The sign of floating point zero is preserved across - arithmetic function calls. - 08-12-04 A bug that caused print(1) to produce garbled - stdout/stderr output has been fixed. - 08-12-04 A bug in which printf "%%d\n" "''" did not output - the numerical value of the EURO symbol has been fixed. - 08-11-20 A bug which could cause a core dump if a function - compiled with shcomp was found has been fixed. - 08-11-20 A bug in which jobs were not cleared from the jobs table - for interactive shells when the pipefail option is on - has been fixed. - 08-11-11 A bug in which running a simple command & inside a - function would not return the correct process id has - been fixed. - 08-11-06 A bug which could cause a core dump when the _ reference - variable was used as an embedded type with a compound - assignment has been fixed. -* Tue Nov 04 2008 werner@suse.de -- Switch to 2008-11-04 of ksh93t for a minor and minimal fix within - the shell syntax parser. -* Fri Oct 31 2008 werner@suse.de -- Switch to 2008-10-31 beta test of ksh93t to fix core dump - in scoping/initialization of variables and arrays. -* Tue Oct 14 2008 werner@suse.de -- Switch to 2008-10-10 beta test of ksh93t to fix multibyte handle - in the read builtin and fix a bug in array type handle. -* Mon Oct 13 2008 werner@suse.de -- Switch to 2008-10-09 beta test of ksh93t to fix a hang caused by - a subshell command substitution with redirection and a crash in - typeset with types that contain arrays of other types a members -* Thu Oct 09 2008 werner@suse.de -- Switch to 2008-10-01 beta test of ksh93t to fix several crashes -- Do not install locale data as this do not work (bnc#433739) -* Mon Sep 22 2008 werner@suse.de -- Switch to 2008-09-21 beta test of ksh93t as this fix a crash -- Change manual page: ksh uses socketpair(2) for pipes (bnc#422675) -* Fri Sep 19 2008 werner@suse.de -- Switch to 2008-09-17 beta test of ksh93t as this fix a crash -- Install the shell functions pushd, popd, and dirs -- Set FPATH accordingly to last change -* Fri Sep 12 2008 werner@suse.de -- Add compiler flags -fno-delete-null-pointer-checks and -fno-tree-vrp - to avoid miss-compile at least of strdup(ast3) maybe caused by a - missing volatile modifier -- Update to release 2008-07-25 of ksh93t - Changes in ksh - 08-07-09 The typeset -C option can be used with arrays to indicate that - each element should default to a compound variable. - 08-07-08 The %%B format now outputs compound variables and arrays. The - alternate flag # can be used to cause output into a single line. - 08-06-23 KSH_VERSION added as a name reference to .sh.version. - 08-06-20 type now outputs 'special builtin' for special builtins. - 08-06-16 When typeset -p is followed by variable names, it now displays - the attributes names and values for the specific names. - 08-06-13 The .sh.lineno variable has been added. When .sh.level is changed - inside a DEBUG trap, the .sh.lineno contains the calling line number - for the specified stack frame. - 08-06-13 The .sh.level variable has been documented and now works. - 08-06-11 The -C option has been added to read for reading compound command - definitions from a file. - 08-06-11 The . command is now permitted inside a compound command definition. - The dot script can contain declaration commands and dot commands. - 08-06-09 Add -C option to typeset so that typeset -C foo, is equivalent - to foo=(). - 08-06-09 Added -n warning message for typeset option orderings that are valid - with ksh88 but not valid with ksh93, for example Lx5. - 08-06-02 When defining a type, the typeset -r attribute causes this field - to be required to be specified for each instance of the type and - does not allow a default value. - 08-05-22 The ceil function has been added to the math functions. - 08-05-19 The array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} - to expand to the value (or subscripts) for array between sub1 and - sub2 inclusive. For associative arrays, the range is based on - location in the POSIX locale. The .. must be explicit and cannot - result from an expansion. - 08-05-15 The trap on SIGCLD is no longer triggered by the completion of - the foreground job as with ksh88. - 08-05-12 The unset built-in now returns non-zero when deleting an array - subscript that is not set. - 08-05-08 Changing the value of HISTFILE or HISTSIZE will cause the old - history file to be close and reopened with the new name or size. - 08-05-08 When FPATH is changed functions that were found via a path search - will be searched for again. - 08-05-07 The typeset -S option was added for variables outside type - definitions to provide a storage class similar to C static - inside a function defined with function name. - 08-05-01 In multiline edit mode, the refresh operation will now clear - the remaining portion of the last line. - 08-04-30 The emacs and vi editors have been modified to handle window - change commands as soon as they happen rather than waiting for - the next command. - 08-04-04 Choose the name _ as the sub-variable that holds type or instance - specific data used by discipline functions. - 08-03-20 Associative array assignments of the form ([name]=value ...) - now allow ; as well as space tab and new line to separate elements. - 08-03-17 --default option added to set(1) to handle set +o POSIX semantics. - set --state added as a long name alias for set +o. - 08-03-10 The new ${...} command substitution will treat the trailing } - as a reserved word even if it is not at the beginning of a command, - for example, ${ date }. - 08-03-10 If the name of the ENV begins with /./ or ././ then the - /etc/ksh.kshrc file will not be executed on systems that support - this interactive initialization file. - 08-02-29 The redirection operator >; has been added which for non-special - files, generates the output in a temporary file and writes the - specified file only of the command has completed successfully. - 08-02-14 The typeset -a option can now optionally be followed by the name - of an enumerication type which allows subscripts to be enumerations. - 08-02-14 The enum builtin which creates enumeration types has been added. - 08-02-12 The backoff logic when there are no more processes has been fixed. - 08-02-07 The -X option has been added to typeset. The -X option creates - a double precision number that gets displayed using the C99 %%a - format. It can be used along with -l for long double. - 08-01-31 The -T option to typeset has been added for creating typed - variables. Also the -h and -S options have been added to - typeset that are only applicable when defining a type. - 08-01-31 The prefix expansion operator @ has been added. ${@name} - expandes to the type of name or yields the attributes. - 07-09-19 In both emacs and vi edit mode, the escape sequence \E[A (usually - cursor up, when the cursor is at the end of the line will fetch - the most recent line starting with the current line. - 07-09-18 The value of ${!var} was correct when var was a reference to an - array instance. - 07-09-18 The value of ${!var[sub]} was not expanding to var[sub] and this - was fixed. It also fixed ${name} where name is a name reference - to var[sub]. - 07-09-18 It is now legal to create a name reference without an initialization. - It will be bound to a variable on the first assignment. - 07-08-30 A discipline function can be invoked as ${x.foo} and is equivalent - to ${ x.foo;} and can be invoked as x.foo inside ((...)). - 07-07-03 The command substitution ${ command;} has been added. It behaves - like $(command) except that command is executed in the current - shell environment. The ${ must be followed by a blank or an - operator. -* Mon May 05 2008 werner@suse.de -- Fix patch for option handling of echo builtin (bnc#385986) -* Tue Mar 25 2008 werner@suse.de -- Add missing link to file list -* Mon Mar 17 2008 werner@suse.de -- Work around a bug in former postun script -* Thu Feb 14 2008 werner@suse.de -- Add locale for ksh and libraries in ast format -- Update to official bugfix release 2008-02-02 of ksh93s+ - * A bug in which command substitution inside ((...)) could cause - syntax errors or lead to core dumps has been fixed. - * A bug in which discipline functions could be deleted when invoked - from a subshell has been fixed. - * A bug in which a command substitution consisting only of - assignments was treated as a noop has been fixed. - * A bug in which discipline functions invoked from withing a - compound assignment could fail has been fixed. - * Incomplete arithmetic assigments, for example ((x += )), now - generate an error message. - * A bug in which a set discipline defined for a variable before - an array assignment could cause a core dump has been fixed. - * A bug in on some systems in which exit status 0 is incorrectly - returned by a process that catches the SIGCONT signal is stopped - and then continued. - * libast: string/strmatch.c: fix str="" pat="" sub values - * libast: comp/conf.sh,conf.tab: handle /bin/sh \ in read data, redir subshell - * libast: misc/magic.tab: amd-x68, 64-bit => x86-64 - * libast: string/strnton.c,strntonll.c: add - * libcmd: expr.c: fix <=0 type that broke substr * 1 * -* Sun Jan 27 2008 coolo@suse.de -- fix changelog -* Tue Jan 08 2008 werner@suse.de -- Update to private bugfix release 2008-01-06 ksh93s+ - * A bug in on some systems in which exit status 0 is incorrectly - returned by a process that catches the SIGCONT signal is stopped - and then continued. -* Fri Dec 21 2007 werner@suse.de -- Update to private bugfix release 2007-12-15 of ksh93s+ - * A race condition in which a program that has been stopped and then - continued could loose the exit status has been fixed. - * Code to check for file system out of space write errors for all - writes has been added. - * A bug in the macro expander for multibyte characters in which - part of the character contains a file pattern byte has been fixed. - * A bug in the emacs edit mode when multiline was set that output - a backspace before the newline to the screen has been fixed. - * A bug in which using TAB after a variable name listing expansion - in the edit modes would cause the $ to disappear has been fixed. - * A bug in which setting IFS to readonly could cause a subsequent - command substitution to fail has been fixed. - * A work around for a gcc 4.* C99 "feature" that could cause a job - control shell to go into an infinite loop by adding the volatile - attribute to some auto vars in functions that call setjmp(). - * A bug in which the shell could read ahead on a pipe causing the - standard input to be incorrectly positioned has been fixed. - * A bug in which compound variable UTF-8 multibyte values were not - expanded or traced properly has been fixed. - * A bug where an unbalanced '[' in a command argument was not treated - properly has been fixed. - * A bug in which compatibility mode (no long option names) getopts(1) - incorrectly set the value of OPTARG for flag options has been fixed. - * A bug in which "hash -- name" treated "--" as an invalid name operand - has been fixed. - * typeset now handles "-t -- [-r] [--]" for s5r4 hash(1) compatibility. - * A bug in which the umask builtin mis-handled symbolic mode operands - has been fixed. - * Bugs in which shell arithmetic and the printf builtin mis-handled the - signs of { -NaN -Inf -0.0 } have been fixed. - * The full { SIGRTMIN SIGRTMIN+1 ... SIGRTMAX-1 SIGRTMAX } range - of signals, determined at runtime, are now supported. - * A bug in which creating an index array with only subscript 0 created - only a simple variable has been fixed. - * A bug in which appending to an indexed array using the form - name+=([sub]=value) could cause the array to become an associative - array has been fixed. - * A bug in which typeset without arguments could coredump if a - variable is declared as in indexed array and has no elements has - been fixed. - * A bug in which creating a local SECONDS variable with typeset in - a function could corrupt memory has been fixed. - * A bug which could cause a core dump when a script invoked by name - from a function used compound variables has been fixed. - * A bug in which printf %%d "'AB" did not diagnose unconverted - characters has been fixed. - * printf %%g "'A" support added for all floating point formats. - * A bug in which typeset -f fun did not display the function - definition when invoked in a subshell has been fixed. - * The sleep builtin was fixed so that all floating point - constants are valid operands. - * A bug in which the locale was not being restored after - LANG=value command has been fixed. - * A bug in which a nameref to a compound variable that was - local to the calling function would not expand correctly - when displaying is value has been fixed. - * A bug which cause cause a core dump if .sh.edchar returned - 80 characters or more from a keyboard trap has been fixed. - * A bug in which could cause a core dump when more than 8 file - descriptors were in use has been fixed. - * A bug in which creating a name reference to an instance of an - array when the array name is itself a reference has been fixed. - * The file completion code has been modified so that after an - `=' in any word, each : will be considered a path delimiter. - * A bug in which subprocess cleanup could corrupt the malloc() - heap has been fixed. - * A bug in which a name reference to an associatve array - instance could cause the subscript to be evaluated as an - arithmetic expression has been fixed. - * A bug in which the value of an array instance was of a - compound variable was not expanded correctly has been fixed. - * A bug which could cause a core dump when a compound assignment - was made to a compound variable element with a typeset -a - attribute has been fixed. - * A bug in which a trap ignored in a subshell caused it to be - ignored by the parent has been fixed. - * A bug in which the set command would generated erroneous - output for a variable with the -RZ attribute if the variable - name had been passed to a function has been fixed. - * A bug in which read x[1] could core dump has been fixed. - * A second bug in which after read x[sub] into an associative - array of an element that hasn't been assigned could lead to - a core dump has been fixed. - * A bug in which a pipeline that completed correctly could have - an exit status of 127 when pipefail was enabled has been fixed. - * The SHOPT_AUDIT compile option has been added for keyboard - logging. - * libast: string/strelapsed.c: "0" is a valid elapsed time! - * libast: sfio/sfreserve.c: preserve SF_SHARE sfrd() via sfreserve(f,0,0) - * libast: comp/setlocale.c: add sjis_mbtowc() to work around [\~] translation - * libast: features/signal.c: RT(1) .. RT(MAX-1) => RTMIN+1 .. RTMAX-1 - * libast: features/float: favor sscanf() due to gnu strto[l]d() nan bugs - * libast: regex/regcomp.c: fix REX_COLL_CLASS node allocation - size - * libast: sfio/sfcvt.c: use signbit() if available - * libast: features/isoc99: _ISOC99_SOURCE tests - * libast: port/astmath.c: add -DN=8 for signbit() - * libast: sfio/sfstrtod.h: don't forget about -0.0 - * libast: features/map.c: add { optopt optarg optind opterr } - * libast: features/stdio: add _filbuf => _ast__filbuf - * libast: comp/getsubopt.c: fix #undef that interfered with - - * libast: regex/regcomp.c: fix bug that missed ')' in ~(F)... - * libast: port/astconf.c: fix CONF_ALLOC 16 bit overflow - * libast: misc/fts.c: fix fts_close() to free the handle - * libast: comp/setlocale.c: second and subsequent - setlocale(*,"") reverts to previous - * libast: path/pathprobe.c: add vfs ST_NOSUID check - * libast: comp/conf.tab: add a few more xpg6 deferrals - * libast: astsa: update to share with mainline src via - _PACKAGE_astsa - * libast: sfio/sfgetr.c: no limit on string stream line size - * libast: sfio/sfextern.c: increase _Sfmaxr to 256*1024 - * libast: misc/procopen.c: tighten up SIGCHLD logic between - parent/child - * libast: misc/signal.c: unblock SIG_DFL after setting handler, - sig<0 => don't unblock - * libast: misc/fs3d.c: no $LD_PRELOAD => no 3d and avoids - invalid mount(2) call - * libast: vmalloc: vmstat(0,0)==1 => region in use, drop - VM_primary|VM_secondary - * libast: misc/recstr.c: handle [lL] gobbled by strtol() - * libast: path/pathprobe.c: handle '\r' in VERSION string - * libast: regex/regcache.c: regcache(0,n,0) extends cache to - size n (no shrinking) - * libast: tm/tmdata.c: add 2005-12-31, drop 1999-12-31 - * libcmd: cp.c: fix builtin state reinitialization - * libcmd: rev.c: honor multibyte locales - * libcmd: cp.c: open non-existent destination with O_EXCL - * libcmd: stty.c: add -t,--terminal-group to list tty pgrp - * libcmd: cksum.c: --silent -s => -S, -s == -x sys5 for gnu compatibility - * libcmd: tee.c: drop ancient bsd compatibility "-" operand => SIGINT - * libcmd: cksum.c: add SUM_LEGACY for -r - * libcmd: cp.c: plug usage string memory leak by using - per-builtin state - * libcmd: cksum.c: add sumprint() default scale arg, - --scale, --bsd for solaris - * libcmd: chmod.c: add --show,-n - * libcmd: wclib.c: bias checks for modern unix - * libcmd: cat.c: fix --squeeze-blank to reduce multiple blank - lines to *one* - * libsum: sum.h, sumlib.c: add SUM_LEGACY for legacy output - format - * libsum: sum-sha1.c: reinstate Steve Reid's public domain - implementation - * libsum: sumlib.c: drop GPL sum-sha1.c -* Fri Nov 23 2007 werner@suse.de -- Add missed limit patch -- Fix problem with endless loop due missing reset of the SIGTSTP - singal handler after a failed program execution (bug #343111) -* Tue Nov 20 2007 werner@suse.de -- Fix bug in mbchar() macro to be able to run test for bug #341594 -- Make option -n for echo builtin work even for AT&T universe -* Fri Nov 16 2007 werner@suse.de -- Fix the bug fix, that is decrement current size (bug #341594) -* Fri Nov 16 2007 werner@suse.de -- Enable signal handling for non-interactive mode (bug #339875) -- Ignore signal QUIT always (bug #339875) -- Ignore signal INT in case of waiting on a job (bug #339875) -- Handle multibyte chars in variable expansion (bug #341594) -* Mon Oct 29 2007 werner@suse.de -- Work around a double -g problem which breaks debugging builds -* Mon Sep 17 2007 werner@suse.de -- Update to bugfix version 2007-06-28 of ksh93s+ (bug #263053) - * In vi insert mode, ksh no longer emits a backspace character - before the carriage return when the newline is entered - * A bug in which pipefail would cause a command to return 0 - when the pipeline was the last command and the failure - happened on a component other than the last has been fixed - * A bug in the expansion of ${var/pattern/rep} when pattern - or rep contained a left parenthesis in single quotes has - been fixed - * The braces for a subscripted variable with ${var[sub]} are - now optional when inside [[...]], ((...)) or as a subscript - * A bug in brace expansion in which single and double quotes - did not treat the comma as a literal character has been fixed - * The -p option of whence now disables -v - * Several bug fixes in compound variables and arrays of arrays - have been made - * A bug in which the %%B format of printf was affected by the - locale has been fixed - * A bug in which \ was not removed in the replacement pattern - with ${var/pattern/rep} when it was not followed by \ or a - digit has been fixed - * A bug in which ksh -R file core dumped if no script was - specified has been fixed, it now displays an error message - * Added additional Solaris signals to signal table - * A bug in which a pipeline with command substitution inside - a function could cause a pipeline that invokes this function - to hang when the pipefail option is on has been fixed - * Added -q to whence - * A small memory leak with each redirection of a non-builtin - has been fixed -- Fix many wrong detected limits for Linux like INT_MAX -- Adapt FS3D file system: mount(2) of Linux uses five arguments -- Fix bug in pointer arithmetic: after reallocation the addresses - of the old area of an pointer array are changed (bug #300653) -- Overflow in keytrap(): strncpy(3) does not append ASCII 0 if - buffer is fully used -- This updated version includes fix for bug #268488 -- Enable the AT&T UNIVERSE for ksh as pdksh does, see bug #249783 -* Wed Jun 20 2007 werner@suse.de -- Fix pointer arithmetics within sh_trim() (bug #284611) -* Tue Jun 19 2007 werner@suse.de -- Correct bug ID (bug #284580) -* Fri May 25 2007 werner@suse.de -- Minor issuse like file permissions -* Thu May 03 2007 werner@suse.de -- Fix string conversion for high unsigned numbers (bug #268488) -* Wed Apr 04 2007 werner@suse.de -- Minor correction for builtin uname -i -* Mon Apr 02 2007 werner@suse.de -- Update to ksh93s+ (bug #239215) -- Be sure that iffe can handle option -n even if bash is used -* Fri Mar 30 2007 werner@suse.de -- Disable AT&T UNIVERSE change -* Wed Mar 28 2007 werner@suse.de -- Reset exit status in case of catching SIGCONT (bug #254649) -- Use the AT&T UNIVERSE for ksh as pdksh does (bug #249783) -* Fri Jan 12 2007 werner@suse.de -- Do not use binary OR instead of a logic OR (#233299) -- Help the compile time and run time linker (#233299) -* Mon Nov 20 2006 werner@suse.de -- Avoid that a sub shell close required file descriptors (#222411) -* Fri Nov 10 2006 werner@suse.de -- On ia64 a cast of an integer to a character pointer and back to - an long integer may results into an unaligned access, fix this - in the SIGWINCH handler (bug #209643) -* Tue Nov 07 2006 ro@suse.de -- fix permissions for manpages -* Mon Jul 10 2006 werner@suse.de -- Don't trim backslash part of a multibyte character away (#189239) -* Tue Jul 04 2006 werner@suse.de -- Builtin cut: allow last line without newline (#189231) -- Utility shcomp: fix segfault and install it (#189778) -* Tue Jun 27 2006 werner@suse.de -- No segmentation fault if ksh uses shared command libray (#188404) -* Tue Jun 20 2006 werner@suse.de -- Make it build even on new beta with new glibc headers -* Wed May 31 2006 werner@suse.de -- Fix segmentation fault in vi command line mode (bug #179917) -* Mon May 29 2006 werner@suse.de -- Make -i and -p option of uname builtin work (bug #178962) -* Tue May 09 2006 werner@suse.de -- Change PreRequire /bin/bash to /etc/bash.bashrc (bug #172633) -* Mon May 08 2006 werner@suse.de -- Correct order of souring order of the users profile and the - system kshrc files (bug #172753) -* Wed Apr 19 2006 werner@suse.de -- Do not source system rc files if ksh is not interactive -- Correct string from GMT to UTC for Universal Time Coordinates -* Wed Apr 19 2006 werner@suse.de -- Fix the patch for the multi byte characters (bug #163665) -* Tue Apr 18 2006 werner@suse.de -- Fix multi byte handling even for command line mode emacs/vi -* Thu Apr 06 2006 werner@suse.de -- Handle multi byte characters within macro expansion (bug #163665) -* Mon Mar 27 2006 werner@suse.de -- Update to ksh 93r -* Wed Jan 25 2006 mls@suse.de -- converted neededforbuild to BuildRequires -* Tue Dec 20 2005 werner@suse.de -- Move manual pages of libast to an own subsection 3ast (#140295) -* Fri Dec 16 2005 werner@suse.de -- Make it build even with bash 3.1 and gcc 4.1.0 -* Thu Nov 17 2005 uli@suse.de -- disabled some tests on ARM (occasionally hang QEMU) -* Mon Oct 24 2005 werner@suse.de -- PreReqire the bash to get the system wide bash.bashrc -* Mon Sep 19 2005 werner@suse.de -- Make it compatible with parallel installed pdksh (bug #105126) -* Mon Sep 19 2005 werner@suse.de -- Avoid useless gcc warning of autogenerated sources -* Tue Aug 16 2005 werner@suse.de -- Move to group System/Shells (bug #104920) -* Wed Apr 13 2005 werner@suse.de -- Make it compile with gcc4 -* Thu Mar 24 2005 werner@suse.de -- Correct initialization for got_sigwinch variable -* Wed Mar 23 2005 werner@suse.de -- Update to release date 2005-02-02 (bug #18698, bug #74348) -* Wed Mar 09 2005 werner@suse.de -- Fix dead link in documentation (bug #71733) -* Fri Feb 04 2005 werner@suse.de -- More on winsize changes: now it works after a new prompt - just like in the pdksh. -* Fri Feb 04 2005 schwab@suse.de -- Workaround broken build system and enable building shared libraries on - x86-64. -* Thu Feb 03 2005 werner@suse.de -- Do not build shared version on x64_86 the ELF macro R_X64_86_32S - breaks that a local symbol -- Make it work on s390x -* Thu Feb 03 2005 werner@suse.de -- Make winsize changes work -- Enable /etc/ksh.kshrc support -- lchmod is not implemented under Linux -- error_exit does never return -- Enable shared libraries instead of the static ones -- Add a warning about CPL versus GPL -* Wed Feb 02 2005 werner@suse.de -- Initial version of the AT&T ksh now under CPL1.0 (bug #3698) diff --git a/ksh93-memleak.dif b/ksh93-memleak.dif new file mode 100644 index 0000000..4b02f3f --- /dev/null +++ b/ksh93-memleak.dif @@ -0,0 +1,102 @@ +--- src/cmd/ksh93/bltins/misc.c ++++ src/cmd/ksh93/bltins/misc.c 2009-08-04 11:59:27.525901725 +0000 +@@ -276,7 +276,11 @@ int b_dot_cmd(register int n,char *ar + shp->st.cmdname = argv[0]; + if(np) + shp->st.filename = np->nvalue.rp->fname; ++ if (SH_PATHNAMENOD->nvfun) ++ SH_PATHNAMENOD->nvfun->nofree |= 4; + nv_putval(SH_PATHNAMENOD, shp->st.filename ,NV_NOFREE); ++ if (SH_PATHNAMENOD->nvfun) ++ SH_PATHNAMENOD->nvfun->nofree &= ~4; + shp->posix_fun = 0; + if(np || argv[1]) + argsave = sh_argnew(shp,argv,&saveargfor); +--- src/cmd/ksh93/sh/subshell.c ++++ src/cmd/ksh93/sh/subshell.c 2009-08-04 11:57:31.829902225 +0000 +@@ -252,7 +252,7 @@ Namval_t *sh_assignok(register Namval_t + Dt_t *dp; + Namval_t *mpnext; + Namarr_t *ap; +- int save; ++ int save, leak; + /* don't bother with this */ + if(!sp->shpwd || (nv_isnull(np) && !add)) + return(np); +@@ -309,7 +309,18 @@ Namval_t *sh_assignok(register Namval_t + save = shp->subshell; + shp->subshell = 0; + mp->nvname = np->nvname; ++ leak = 0; ++ if (np->nvfun && np->nvfun->nofree&4) ++ { ++ leak = 1; ++ np->nvfun->nofree &= ~4; ++ } + nv_clone(np,mp,(add?(nv_isnull(np)?0:NV_NOFREE)|NV_ARRAY:NV_MOVE)); ++ if (leak && mp->nvfun && np->nvfun != mp->nvfun) ++ { ++ free((void*)mp->nvfun); ++ mp->nvfun = np->nvfun; ++ } + shp->subshell = save; + return(np); + } +--- src/cmd/ksh93/sh/xec.c ++++ src/cmd/ksh93/sh/xec.c 2009-08-04 11:58:31.033901866 +0000 +@@ -339,6 +339,7 @@ struct Level + Namfun_t hdr; + short maxlevel; + }; ++struct Level *leaklp; + + /* + * this is for a debugger but it hasn't been tested yet +@@ -352,7 +353,11 @@ static void put_level(Namval_t* np,const + int16_t level, oldlevel = (int16_t)nv_getnum(np); + nv_putv(np,val,flags,fp); + if(!val) ++ { ++ if (np == SH_LEVELNOD) ++ leaklp = (struct Level*)(SH_LEVELNOD->nvfun); + return; ++ } + level = nv_getnum(np); + if(level<0 || level > lp->maxlevel) + { +@@ -374,7 +379,22 @@ static const Namdisc_t level_disc = { s + + static struct Level *init_level(int level) + { +- struct Level *lp = newof(NiL,struct Level,1,0); ++ struct Level *lp; ++ if (!leaklp) ++ lp = newof(NiL,struct Level,1,0); ++ else ++ { ++ if (leaklp->hdr.disc) ++ { ++ leaklp->hdr.disc = NIL(const Namdisc_t*); ++ lp = leaklp; ++ } ++ else ++ { ++ free((void*)leaklp); ++ lp = newof(NiL,struct Level,1,0); ++ } ++ } + lp->maxlevel = level; + _nv_unset(SH_LEVELNOD,0); + nv_onattr(SH_LEVELNOD,NV_INT16|NV_NOFREE); +@@ -2689,7 +2709,11 @@ static void sh_funct(Shell_t *shp,Namval + save = argv[-1]; + argv[-1] = 0; + shp->st.funname = nv_name(np); ++ if (SH_FUNNAMENOD->nvfun) ++ SH_FUNNAMENOD->nvfun->nofree |= 4; + nv_putval(SH_FUNNAMENOD, nv_name(np),NV_NOFREE); ++ if (SH_FUNNAMENOD->nvfun) ++ SH_FUNNAMENOD->nvfun->nofree &= ~4; + opt_info.index = opt_info.offset = 0; + error_info.errors = 0; + shp->st.loopcnt = 0; diff --git a/ksh93-s390.dif b/ksh93-s390.dif index c804df1..8ef18ce 100644 --- a/ksh93-s390.dif +++ b/ksh93-s390.dif @@ -4,7 +4,7 @@ delim = ((unsigned)flags)>>D_FLAG; if(shp->fdstatus[fd]&IOTTY) tty_raw(fd,1); -+#if (defined(__s390__) || defined(__s390x__)) && defined(__linux__) ++#if defined(__linux__) + else if (flags&N_FLAG) + { + struct stat st; diff --git a/ksh93-subshell.dif b/ksh93-subshell.dif deleted file mode 100644 index 29696ad..0000000 --- a/ksh93-subshell.dif +++ /dev/null @@ -1,11 +0,0 @@ ---- src/cmd/ksh93/sh/subshell.c -+++ src/cmd/ksh93/sh/subshell.c 2009-05-13 15:22:39.000000000 +0200 -@@ -317,7 +317,7 @@ static void nv_restore(struct subshell * - mp->nvfun = np->nvfun; - mp->nvflag = np->nvflag; - if(nv_cover(mp)) -- nv_putval(mp, np->nvalue.cp,0); -+ nv_putval(mp, nv_getval(np),0); - else - mp->nvalue.cp = np->nvalue.cp; - np->nvfun = 0; diff --git a/ksh93.dif b/ksh93.dif index 2b09143..687a7d7 100644 --- a/ksh93.dif +++ b/ksh93.dif @@ -79,7 +79,7 @@ while(argv[1] && *argv[1]=='-') --- src/cmd/ksh93/data/msg.c +++ src/cmd/ksh93/data/msg.c 2007-12-20 19:01:26.000000000 +0100 -@@ -184,7 +184,7 @@ const char e_bash_login[] = "$HOME/.bash +@@ -185,7 +185,7 @@ const char e_bash_login[] = "$HOME/.bash const char e_bash_logout[] = "$HOME/.bash_logout"; const char e_bash_profile[] = "$HOME/.bash_profile"; #endif @@ -112,7 +112,7 @@ --- src/cmd/ksh93/sh/io.c +++ src/cmd/ksh93/sh/io.c 2008-09-11 17:16:16.000000000 +0200 -@@ -637,6 +637,7 @@ int sh_close(register int fd) +@@ -641,6 +641,7 @@ int sh_close(register int fd) #ifdef O_SERVICE @@ -120,7 +120,7 @@ static int onintr(struct addrinfo* addr, void* handle) { -@@ -652,6 +653,7 @@ onintr(struct addrinfo* addr, void* hand +@@ -656,6 +657,7 @@ onintr(struct addrinfo* addr, void* hand sh_chktrap(); return 0; } @@ -130,7 +130,7 @@ --- src/cmd/ksh93/sh/main.c +++ src/cmd/ksh93/sh/main.c 2007-12-20 19:01:26.000000000 +0100 -@@ -125,9 +125,9 @@ int sh_source(Shell_t *shp, Sfio_t *iop, +@@ -129,9 +129,9 @@ int sh_source(Shell_t *shp, Sfio_t *iop, } #ifdef S_ISSOCK @@ -142,7 +142,7 @@ #endif int sh_main(int ac, char *av[], Shinit_f userinit) -@@ -192,7 +192,7 @@ int sh_main(int ac, char *av[], Shinit_f +@@ -196,7 +196,7 @@ int sh_main(int ac, char *av[], Shinit_f } if(!sh_isoption(SH_RC) && (sh_isoption(SH_BASH) && !sh_isoption(SH_POSIX) #if SHOPT_REMOTE @@ -166,30 +166,30 @@ static int endsh(const char*); #ifndef _lib_setregid --- src/cmd/ksh93/tests/attributes.sh -+++ src/cmd/ksh93/tests/attributes.sh 2008-09-18 11:54:26.000000000 +0200 -@@ -195,7 +195,7 @@ hello worldhello worldhello world - ! ++++ src/cmd/ksh93/tests/attributes.sh 2009-07-09 15:14:04.632882500 +0200 +@@ -199,7 +199,7 @@ hello worldhello worldhello world [[ $v1 == "$b1" ]] || err_exit "v1=$v1 should be $b1" [[ $v2 == "$x" ]] || err_exit "v1=$v2 should be $x" --[[ $(env '!=1' $SHELL -c 'echo ok' 2>/dev/null) == ok ]] || err_exit 'malformed environment terminates shell' -+[[ $(env "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" '!=1' $SHELL -c 'echo ok' 2>/dev/null) == ok ]] || err_exit 'malformed environment terminates shell' + if env '!=1' >/dev/null 2>&1 +-then [[ $(env '!=1' $SHELL -c 'echo ok' 2>/dev/null) == ok ]] || err_exit 'malformed environment terminates shell' ++then [[ $(env "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" '!=1' $SHELL -c 'echo ok' 2>/dev/null) == ok ]] || err_exit 'malformed environment terminates shell' + fi unset var typeset -b var - printf '12%Z34' | read -r -N 5 var --- src/cmd/ksh93/tests/builtins.sh -+++ src/cmd/ksh93/tests/builtins.sh 2007-12-20 19:01:26.000000000 +0100 -@@ -333,7 +333,7 @@ ifs=$IFS - IFS=, - set -- $(getconf LIBPATH) - IFS=$ifs ++++ src/cmd/ksh93/tests/builtins.sh 2009-07-09 15:14:50.154431765 +0200 +@@ -332,7 +332,7 @@ wait $pid1 + (( $? == 1 )) || err_exit "wait not saving exit value" + wait $pid2 + (( $? == 127 )) || err_exit "subshell job known to parent" -env= +env="LD_LIBRARY_PATH=\$LD_LIBRARY_PATH" - for v - do IFS=: - set -- $v + v=$(getconf LIBPATH) + for v in ${v//,/ } + do v=${v#*:} --- src/cmd/ksh93/tests/path.sh +++ src/cmd/ksh93/tests/path.sh 2008-09-11 18:02:46.000000000 +0200 -@@ -227,7 +227,7 @@ builtin getconf +@@ -228,7 +228,7 @@ builtin getconf getconf UNIVERSE - att # override sticky default 'UNIVERSE = foo' [[ $(PATH=/usr/ucb/bin:/usr/bin echo -n ucb) == 'ucb' ]] || err_exit "ucb universe echo ignores -n option" @@ -198,6 +198,17 @@ PATH=$path +--- src/lib/libast/disc/memfatal.c ++++ src/lib/libast/disc/memfatal.c 2009-07-09 15:30:38.706403542 +0200 +@@ -72,7 +72,7 @@ memfatal(void) + { + Vmdisc_t* disc; + +- malloc(0); ++ void * ptr = malloc(0); + if (disc = vmdisc(Vmregion, NiL)) + disc->exceptf = nomalloc; + } --- src/lib/libast/features/align.c +++ src/lib/libast/features/align.c 2007-12-20 19:01:26.000000000 +0100 @@ -32,6 +32,7 @@