Merge 'master' and 'stdenv-fixes' into x-updates

Final stabilization phase before merging into master.

Conflicts (glibc-2.13):
	pkgs/top-level/all-packages.nix
This commit is contained in:
Vladimír Čunát 2013-06-16 10:13:51 +02:00
commit c72ed04892
13 changed files with 205 additions and 13 deletions

View File

@ -0,0 +1,20 @@
{ stdenv, fetchurl, emacs, texinfo }:
stdenv.mkDerivation {
name = "ess-13.05";
src = fetchurl {
url = "http://ess.r-project.org/downloads/ess/ess-13.05.tgz";
sha256 = "007rd8hg1aclr2i8178ym5c4bi7vgmwkp802v1mkgr85h50zlfdk";
};
buildInputs = [ emacs texinfo ];
configurePhase = "makeFlags=PREFIX=$out";
meta = {
description = "Emacs Speaks Statistics";
homepage = "http://ess.r-project.org/";
license = stdenv.lib.licenses.gpl2Plus;
};
}

View File

@ -40,7 +40,8 @@ composableDerivation {
}.src;
};
configureFlags = ["--enable-gui=auto" "--with-features=${args.features}"];
configureFlags
= [ "--enable-gui=${args.gui}" "--with-features=${args.features}" ];
nativeBuildInputs
= [ ncurses pkgconfig gtk libX11 libXext libSM libXpm libXt libXaw libXau
@ -76,6 +77,7 @@ composableDerivation {
cfg = {
pythonSupport = config.vim.python or true;
rubySupport = config.vim.ruby or true;
nlsSupport = config.vim.nls or false;
tclSupport = config.vim.tcl or false;
multibyteSupport = config.vim.multibyte or false;

View File

@ -7,11 +7,11 @@ let
in
stdenv.mkDerivation rec {
name = "perl-5.14.2";
name = "perl-5.14.4";
src = fetchurl {
url = "mirror://cpan/src/${name}.tar.gz";
sha256 = "1ls8cpbgnlaxfydyyqgr7pxj1hkxh9pzcdgr3dv42zdxffakb234";
sha256 = "1js47zzna3v38fjnirf2vq6y0rjp8m86ysj5vagzgkig956d8gw0";
};
patches =

View File

@ -7,11 +7,11 @@ let
in
stdenv.mkDerivation rec {
name = "perl-5.16.2";
name = "perl-5.16.3";
src = fetchurl {
url = "mirror://cpan/src/${name}.tar.gz";
sha256 = "03nh8bqnjsdd5izjv3n2yfcxw4ck0llwww36jpbjbjgixwpqpy4f";
sha256 = "1dpd9lhc4723wmsn4dsn4m320qlqgyw28bvcbhnfqp2nl3f0ikv9";
};
patches =

View File

@ -55,6 +55,12 @@ stdenv.mkDerivation ({
rfc3484_sort: Assertion `src->results[i].native == -1 ||
src->results[i].native == a2_native' failed." crashes. */
./glibc-rh739743.patch
/* Fix buffer overrun in regexp matcher. */
./cve-2013-0242.patch
/* Fix stack overflow in getaddrinfo with many results. */
./cve-2013-1914.patch
];
postPatch = ''
@ -81,7 +87,7 @@ stdenv.mkDerivation ({
then "--enable-profile"
else "--disable-profile")
] ++ stdenv.lib.optionals (cross == null && kernelHeaders != null) [
"--enable-kernel=2.6.35"
"--enable-kernel=2.6.32"
] ++ stdenv.lib.optionals (cross != null) [
(if cross.withTLS then "--with-tls" else "--without-tls")
(if cross.float == "soft" then "--without-fp" else "--with-fp")

View File

@ -0,0 +1,87 @@
When extending regex buffers, make sure we allocate enough room for the
state log. Merely doubling the space may not be enough if the current
node has accepted a long run of characters. This part of the code only
triggers with multibyte characters.
Andreas.
[BZ #15078]
* posix/regexec.c (extend_buffers): Add parameter min_len.
(check_matching): Pass minimum needed length.
(clean_state_log_if_needed): Likewise.
(get_subexp): Likewise.
* posix/Makefile (tests): Add bug-regex34.
(bug-regex34-ENV): Define.
* posix/bug-regex34.c: New file.
diff --git a/posix/regexec.c b/posix/regexec.c
index 7f2de85..5ca2bf6 100644
--- a/posix/regexec.c
+++ b/posix/regexec.c
@@ -197,7 +197,7 @@ static int group_nodes_into_DFAstates (const re_dfa_t *dfa,
static int check_node_accept (const re_match_context_t *mctx,
const re_token_t *node, int idx)
internal_function;
-static reg_errcode_t extend_buffers (re_match_context_t *mctx)
+static reg_errcode_t extend_buffers (re_match_context_t *mctx, int min_len)
internal_function;
/* Entry point for POSIX code. */
@@ -1160,7 +1160,7 @@ check_matching (re_match_context_t *mctx, int fl_longest_match,
|| (BE (next_char_idx >= mctx->input.valid_len, 0)
&& mctx->input.valid_len < mctx->input.len))
{
- err = extend_buffers (mctx);
+ err = extend_buffers (mctx, next_char_idx + 1);
if (BE (err != REG_NOERROR, 0))
{
assert (err == REG_ESPACE);
@@ -1738,7 +1738,7 @@ clean_state_log_if_needed (re_match_context_t *mctx, int next_state_log_idx)
&& mctx->input.valid_len < mctx->input.len))
{
reg_errcode_t err;
- err = extend_buffers (mctx);
+ err = extend_buffers (mctx, next_state_log_idx + 1);
if (BE (err != REG_NOERROR, 0))
return err;
}
@@ -2792,7 +2792,7 @@ get_subexp (re_match_context_t *mctx, int bkref_node, int bkref_str_idx)
if (bkref_str_off >= mctx->input.len)
break;
- err = extend_buffers (mctx);
+ err = extend_buffers (mctx, bkref_str_off + 1);
if (BE (err != REG_NOERROR, 0))
return err;
@@ -4102,7 +4102,7 @@ check_node_accept (const re_match_context_t *mctx, const re_token_t *node,
static reg_errcode_t
internal_function __attribute_warn_unused_result__
-extend_buffers (re_match_context_t *mctx)
+extend_buffers (re_match_context_t *mctx, int min_len)
{
reg_errcode_t ret;
re_string_t *pstr = &mctx->input;
@@ -4111,8 +4111,10 @@ extend_buffers (re_match_context_t *mctx)
if (BE (INT_MAX / 2 / sizeof (re_dfastate_t *) <= pstr->bufs_len, 0))
return REG_ESPACE;
- /* Double the lengthes of the buffers. */
- ret = re_string_realloc_buffers (pstr, MIN (pstr->len, pstr->bufs_len * 2));
+ /* Double the lengthes of the buffers, but allocate at least MIN_LEN. */
+ ret = re_string_realloc_buffers (pstr,
+ MAX (min_len,
+ MIN (pstr->len, pstr->bufs_len * 2)));
if (BE (ret != REG_NOERROR, 0))
return ret;
--
1.8.1.2
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."

View File

@ -0,0 +1,52 @@
From: Andreas Schwab <schwab@suse.de>
Date: Thu, 21 Mar 2013 14:50:27 +0000 (+0100)
Subject: Fix stack overflow in getaddrinfo with many results
X-Git-Url: http://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=1cef1b19089528db11f221e938f60b9b048945d7
Fix stack overflow in getaddrinfo with many results
---
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index d95c2d1..2309281 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -2489,11 +2489,27 @@ getaddrinfo (const char *name, const char *service,
__typeof (once) old_once = once;
__libc_once (once, gaiconf_init);
/* Sort results according to RFC 3484. */
- struct sort_result results[nresults];
- size_t order[nresults];
+ struct sort_result *results;
+ size_t *order;
struct addrinfo *q;
struct addrinfo *last = NULL;
char *canonname = NULL;
+ bool malloc_results;
+
+ malloc_results
+ = !__libc_use_alloca (nresults * (sizeof (*results) + sizeof (size_t)));
+ if (malloc_results)
+ {
+ results = malloc (nresults * (sizeof (*results) + sizeof (size_t)));
+ if (results == NULL)
+ {
+ __free_in6ai (in6ai);
+ return EAI_MEMORY;
+ }
+ }
+ else
+ results = alloca (nresults * (sizeof (*results) + sizeof (size_t)));
+ order = (size_t *) (results + nresults);
/* Now we definitely need the interface information. */
if (! check_pf_called)
@@ -2664,6 +2680,9 @@ getaddrinfo (const char *name, const char *service,
/* Fill in the canonical name into the new first entry. */
p->ai_canonname = canonname;
+
+ if (malloc_results)
+ free (results);
}
__free_in6ai (in6ai);

View File

@ -126,4 +126,23 @@ in
};
};
syntastic = stdenv.mkDerivation {
name = "vim-syntastic-3.0.0";
src = fetchurl {
url = "https://github.com/scrooloose/syntastic/archive/3.0.0.tar.gz";
sha256 = "0nf69wpa8qa7xcfvywy2khmazs4dn1i2nal9qwjh2bzrbwbbkdyl";
};
buildPhase = "";
installPhase = ''
mkdir -p "$out/vim-plugins"
cp -R autoload "$out/vim-plugins"
cp -R doc "$out/vim-plugins"
cp -R plugin "$out/vim-plugins"
cp -R syntax_checkers "$out/vim-plugins"
'';
};
}

View File

@ -253,7 +253,7 @@ in
import ./generic.nix (
rec {
version = "3.9.5";
version = "3.9.6";
testing = false;
preConfigure = ''
@ -262,7 +262,7 @@ import ./generic.nix (
src = fetchurl {
url = "mirror://kernel/linux/kernel/v3.x/${if testing then "testing/" else ""}linux-${version}.tar.xz";
sha256 = "05y3wrvady60p8ksjwwa5c2jia2ax9q0p7lhr62yafywh5piyfbw";
sha256 = "0spba7qkf56j233r84y23xl7d44ndvw5ja7h3pfhsq861dypcc0i";
};
config = configWithPlatform stdenv.platform;

View File

@ -9,6 +9,7 @@ stdenv.mkDerivation ({
sha256 = "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83";
};
nativeBuildInputs = [ bzip2 ];
buildInputs = [ bzip2 ] ++ stdenv.lib.optional enableNLS libnatspec;
makefile = "unix/Makefile";

View File

@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
homepage = http://www.tuxera.com/community/;
description = "FUSE-base NTFS driver with full write support";
maintainers = [ stdenv.lib.maintainers.urkud ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
homepage = http://podgorny.cz/moin/UnionFsFuse;
license = stdenv.lib.licenses.bsd3;
maintainers = [ stdenv.lib.maintainers.shlevy ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -7123,6 +7123,8 @@ let
emms = callPackage ../applications/editors/emacs-modes/emms { };
ess = callPackage ../applications/editors/emacs-modes/ess { };
flymakeCursor = callPackage ../applications/editors/emacs-modes/flymake-cursor { };
gh = callPackage ../applications/editors/emacs-modes/gh { };
@ -8283,6 +8285,7 @@ let
features = "huge"; # one of tiny, small, normal, big or huge
lua = pkgs.lua5;
gui = config.vim.gui or "auto";
# optional features by flags
flags = [ "python" "X11" ]; # only flag "X11" by now
@ -9532,11 +9535,11 @@ let
name = "patoline";
buildInputs = [ stdenv ncurses mesa freeglut libzip gcc
pack.ocaml pack.findlib pack.camomile
pack.dypgen pack.ocaml_sqlite3 pack.camlzip
pack.lablgtk pack.camlimages pack.ocaml_cairo
pack.lablgl pack.ocamlnet pack.cryptokit
pack.ocaml_pcre pack.patoline
];
pack.dypgen pack.ocaml_sqlite3 pack.camlzip
pack.lablgtk pack.camlimages pack.ocaml_cairo
pack.lablgl pack.ocamlnet pack.cryptokit
pack.ocaml_pcre pack.patoline
];
# this is to circumvent the bug with libgcc_s.so.1 which is
# not found when using thread
extraCmds = ''