diff --git a/pkgs/applications/editors/emacs-modes/ess/default.nix b/pkgs/applications/editors/emacs-modes/ess/default.nix new file mode 100644 index 00000000000..4bd5148b950 --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/ess/default.nix @@ -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; + }; +} diff --git a/pkgs/applications/editors/vim/configurable.nix b/pkgs/applications/editors/vim/configurable.nix index b598a3d461e..d9211203cad 100644 --- a/pkgs/applications/editors/vim/configurable.nix +++ b/pkgs/applications/editors/vim/configurable.nix @@ -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; diff --git a/pkgs/development/interpreters/perl/5.14/default.nix b/pkgs/development/interpreters/perl/5.14/default.nix index ac19900bcfc..08690e9507f 100644 --- a/pkgs/development/interpreters/perl/5.14/default.nix +++ b/pkgs/development/interpreters/perl/5.14/default.nix @@ -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 = diff --git a/pkgs/development/interpreters/perl/5.16/default.nix b/pkgs/development/interpreters/perl/5.16/default.nix index 288de63b4ae..2113faee164 100644 --- a/pkgs/development/interpreters/perl/5.16/default.nix +++ b/pkgs/development/interpreters/perl/5.16/default.nix @@ -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 = diff --git a/pkgs/development/libraries/glibc/2.17/common.nix b/pkgs/development/libraries/glibc/2.17/common.nix index 413a0d7aae8..e0588a6275d 100644 --- a/pkgs/development/libraries/glibc/2.17/common.nix +++ b/pkgs/development/libraries/glibc/2.17/common.nix @@ -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") diff --git a/pkgs/development/libraries/glibc/2.17/cve-2013-0242.patch b/pkgs/development/libraries/glibc/2.17/cve-2013-0242.patch new file mode 100644 index 00000000000..1d6557071e1 --- /dev/null +++ b/pkgs/development/libraries/glibc/2.17/cve-2013-0242.patch @@ -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." + diff --git a/pkgs/development/libraries/glibc/2.17/cve-2013-1914.patch b/pkgs/development/libraries/glibc/2.17/cve-2013-1914.patch new file mode 100644 index 00000000000..c2963249f5e --- /dev/null +++ b/pkgs/development/libraries/glibc/2.17/cve-2013-1914.patch @@ -0,0 +1,52 @@ +From: Andreas Schwab +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); diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix index b0c70d95821..3a24bee43de 100644 --- a/pkgs/misc/vim-plugins/default.nix +++ b/pkgs/misc/vim-plugins/default.nix @@ -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" + ''; + }; } + diff --git a/pkgs/os-specific/linux/kernel/linux-3.9.nix b/pkgs/os-specific/linux/kernel/linux-3.9.nix index e87d3c3198f..ed7451dfe5d 100644 --- a/pkgs/os-specific/linux/kernel/linux-3.9.nix +++ b/pkgs/os-specific/linux/kernel/linux-3.9.nix @@ -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; diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix index 8309a2102ab..f939c968c44 100644 --- a/pkgs/tools/archivers/unzip/default.nix +++ b/pkgs/tools/archivers/unzip/default.nix @@ -9,6 +9,7 @@ stdenv.mkDerivation ({ sha256 = "0dxx11knh3nk95p2gg2ak777dd11pr7jx5das2g49l262scrcv83"; }; + nativeBuildInputs = [ bzip2 ]; buildInputs = [ bzip2 ] ++ stdenv.lib.optional enableNLS libnatspec; makefile = "unix/Makefile"; diff --git a/pkgs/tools/filesystems/ntfs-3g/default.nix b/pkgs/tools/filesystems/ntfs-3g/default.nix index 50ebb1b068a..f6177fd8976 100644 --- a/pkgs/tools/filesystems/ntfs-3g/default.nix +++ b/pkgs/tools/filesystems/ntfs-3g/default.nix @@ -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; }; } diff --git a/pkgs/tools/filesystems/unionfs-fuse/default.nix b/pkgs/tools/filesystems/unionfs-fuse/default.nix index 5b681ab170c..4da1a84e937 100644 --- a/pkgs/tools/filesystems/unionfs-fuse/default.nix +++ b/pkgs/tools/filesystems/unionfs-fuse/default.nix @@ -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; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e0fde8ee0cd..25ae2dcc717 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -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 = ''