diff options
-rw-r--r-- | user/libcroco/APKBUILD | 42 | ||||
-rw-r--r-- | user/libcroco/CVE-2017-7960.patch | 58 |
2 files changed, 100 insertions, 0 deletions
diff --git a/user/libcroco/APKBUILD b/user/libcroco/APKBUILD new file mode 100644 index 000000000..5365445f7 --- /dev/null +++ b/user/libcroco/APKBUILD @@ -0,0 +1,42 @@ +# Maintainer: +pkgname=libcroco +pkgver=0.6.12 +pkgrel=2 +pkgdesc="GNOME CSS 2 parsing and manipulation toolkit" +url="https://gitlab.gnome.org/GNOME/libcroco" +arch="all" +options="!check" # Can only test already-installed library +license="LGPL-2.1-only" +subpackages="$pkgname-dev" +depends= +makedepends="glib-dev libxml2-dev" +checkdepends="cmd:which" +source="https://download.gnome.org/sources/$pkgname/0.6/$pkgname-$pkgver.tar.xz + CVE-2017-7960.patch" + +# secfixes: +# 0.6.12-r2: +# - CVE-2017-7960 + +build() { + cd "$builddir" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --disable-static + make +} + +check() { + cd "$builddir" + make test +} + +package() { + cd "$builddir" + make DESTDIR="$pkgdir" install +} + +sha512sums="af9a171d5ccded255b57f170576e67155f12fa0f61ab3e379e907975f77afc37e82e22772c6019b2897cffc15b2425faf3ccfda92b1a45b23eda2519debabeb6 libcroco-0.6.12.tar.xz +da26b95808d7f06c15afed306fac2a80012413bf96ad2cd249c7420a6f41a02d76abeb80b94705f24414f1986084aa4d864fd82038274f664fa91b31fbcabd30 CVE-2017-7960.patch" diff --git a/user/libcroco/CVE-2017-7960.patch b/user/libcroco/CVE-2017-7960.patch new file mode 100644 index 000000000..4561392c0 --- /dev/null +++ b/user/libcroco/CVE-2017-7960.patch @@ -0,0 +1,58 @@ +From 898e3a8c8c0314d2e6b106809a8e3e93cf9d4394 Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro <qignacio@amazon.com> +Date: Sun, 16 Apr 2017 13:13:43 +0200 +Subject: [PATCH] input: check end of input before reading a byte + +When reading bytes we weren't check that the index wasn't +out of bound and this could produce an invalid read which +could deal to a security bug. +--- + src/cr-input.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/cr-input.c b/src/cr-input.c +index 49000b1..3b63a88 100644 +--- a/src/cr-input.c ++++ b/src/cr-input.c +@@ -256,7 +256,7 @@ cr_input_new_from_uri (const gchar * a_file_uri, enum CREncoding a_enc) + *we should free buf here because it's own by CRInput. + *(see the last parameter of cr_input_new_from_buf(). + */ +- buf = NULL ; ++ buf = NULL; + } + + cleanup: +@@ -404,6 +404,8 @@ cr_input_get_nb_bytes_left (CRInput const * a_this) + enum CRStatus + cr_input_read_byte (CRInput * a_this, guchar * a_byte) + { ++ gulong nb_bytes_left = 0; ++ + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_byte, CR_BAD_PARAM_ERROR); + +@@ -413,6 +415,12 @@ cr_input_read_byte (CRInput * a_this, guchar * a_byte) + if (PRIVATE (a_this)->end_of_input == TRUE) + return CR_END_OF_INPUT_ERROR; + ++ nb_bytes_left = cr_input_get_nb_bytes_left (a_this); ++ ++ if (nb_bytes_left < 1) { ++ return CR_END_OF_INPUT_ERROR; ++ } ++ + *a_byte = PRIVATE (a_this)->in_buf[PRIVATE (a_this)->next_byte_index]; + + if (PRIVATE (a_this)->nb_bytes - +@@ -477,7 +485,6 @@ cr_input_read_char (CRInput * a_this, guint32 * a_char) + if (*a_char == '\n') { + PRIVATE (a_this)->end_of_line = TRUE; + } +- + } + + return status; +-- +2.17.1 + |