aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Fabrice Fontaine <fontaine.fabrice@gmail.com>2019-03-14 22:25:59 +0100
committerGravatar Thomas Petazzoni <thomas.petazzoni@bootlin.com>2019-04-13 22:41:28 +0200
commit380375d380f68738b6032818422ca85237828699 (patch)
treef3e7e82f96424f33b8560ff0dffc27a6f2644acf
parent639dfba429d2ed48c29b7a19415cbd41d8908cf8 (diff)
downloadbuildroot-380375d380f68738b6032818422ca85237828699.tar.gz
buildroot-380375d380f68738b6032818422ca85237828699.tar.bz2
package/libhtp: new package
LibHTP is a security-aware parser for the HTTP protocol and the related bits and pieces. https://github.com/OISF/libhtp Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> [Thomas: always disable SSP, let our gcc/wrapper handle that] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-rw-r--r--DEVELOPERS1
-rw-r--r--package/Config.in1
-rw-r--r--package/libhtp/0001-fix-build-without-GNU-libiconv.patch60
-rw-r--r--package/libhtp/Config.in9
-rw-r--r--package/libhtp/libhtp.hash3
-rw-r--r--package/libhtp/libhtp.mk21
6 files changed, 95 insertions, 0 deletions
diff --git a/DEVELOPERS b/DEVELOPERS
index e2ee7cbf69..40d0642c2e 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -798,6 +798,7 @@ F: package/libgee/
F: package/libglib2/
F: package/libgtk2/
F: package/libgtk3/
+F: package/libhtp/
F: package/libidn/
F: package/libidn2/
F: package/libjpeg/
diff --git a/package/Config.in b/package/Config.in
index eed842c67a..ceb78fac0b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1548,6 +1548,7 @@ menu "Networking"
source "package/libeXosip2/Config.in"
source "package/libfcgi/Config.in"
source "package/libgsasl/Config.in"
+ source "package/libhtp/Config.in"
source "package/libhttpparser/Config.in"
source "package/libidn/Config.in"
source "package/libidn2/Config.in"
diff --git a/package/libhtp/0001-fix-build-without-GNU-libiconv.patch b/package/libhtp/0001-fix-build-without-GNU-libiconv.patch
new file mode 100644
index 0000000000..8f6cddf2da
--- /dev/null
+++ b/package/libhtp/0001-fix-build-without-GNU-libiconv.patch
@@ -0,0 +1,60 @@
+From 1531a8e9b91b567979a2a0d7fd6a4c2e9126b01c Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Wed, 6 Mar 2019 23:06:54 +0100
+Subject: [PATCH] fix build without GNU libiconv
+
+iconvctl is only defined in GNU libiconv so check for the availability
+of this function before using it
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Upstream status: https://github.com/OISF/libhtp/pull/193]
+---
+ configure.ac | 18 ++++++++++++++++++
+ htp/htp_transcoder.c | 2 +-
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 7f0a58d..388ec7b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -155,6 +155,24 @@ sinclude(m4/lib-link.m4)
+ sinclude(m4/lib-prefix.m4)
+ AM_ICONV
+
++# iconvctl is not standard, it is defined only in GNU libiconv
++AC_MSG_CHECKING(for iconvctl)
++TMPLIBS="${LIBS}"
++LIBS="${LIBS} ${LIBICONV}"
++
++AC_TRY_LINK([#include <stdlib.h>
++ #include <iconv.h>],
++ [int iconv_param = 0;
++ iconv_t cd = iconv_open("","");
++ iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, &iconv_param);
++ iconv_close(cd);],
++ [ac_cv_func_iconvctl=yes])
++AC_MSG_RESULT($ac_cv_func_iconvctl)
++if test "$ac_cv_func_iconvctl" == yes; then
++ AC_DEFINE(HAVE_ICONVCTL,1,"Define to 1 if you have the `iconvctl' function.")
++fi
++LIBS="${TMPLIBS}"
++
+ dnl -----------------------------------------------
+ dnl Check and enable the GCC opts we want to use.
+ dnl We may need to add more checks
+diff --git a/htp/htp_transcoder.c b/htp/htp_transcoder.c
+index 57ff74c..d8e8280 100644
+--- a/htp/htp_transcoder.c
++++ b/htp/htp_transcoder.c
+@@ -64,7 +64,7 @@ int htp_transcode_params(htp_connp_t *connp, htp_table_t **params, int destroy_o
+ return HTP_ERROR;
+ }
+
+- #if (_LIBICONV_VERSION >= 0x0108)
++ #if (_LIBICONV_VERSION >= 0x0108 && HAVE_ICONVCTL)
+ int iconv_param = 0;
+ iconvctl(cd, ICONV_SET_TRANSLITERATE, &iconv_param);
+ iconv_param = 1;
+--
+2.14.1
+
diff --git a/package/libhtp/Config.in b/package/libhtp/Config.in
new file mode 100644
index 0000000000..98b9e2adea
--- /dev/null
+++ b/package/libhtp/Config.in
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_LIBHTP
+ bool "libhtp"
+ select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+ select BR2_PACKAGE_ZLIB
+ help
+ LibHTP is a security-aware parser for the HTTP protocol and
+ the related bits and pieces.
+
+ https://github.com/OISF/libhtp
diff --git a/package/libhtp/libhtp.hash b/package/libhtp/libhtp.hash
new file mode 100644
index 0000000000..be68547be2
--- /dev/null
+++ b/package/libhtp/libhtp.hash
@@ -0,0 +1,3 @@
+# Locally computed:
+sha256 7384f8461ad0431e9247c49b37a73929b284f39408d1f11b80949b188069b638 libhtp-0.5.30.tar.gz
+sha256 87c93904e5434c81622ea690c2b90097b9f162aaa92a96542649a157dbf98d15 LICENSE
diff --git a/package/libhtp/libhtp.mk b/package/libhtp/libhtp.mk
new file mode 100644
index 0000000000..3f7cecb277
--- /dev/null
+++ b/package/libhtp/libhtp.mk
@@ -0,0 +1,21 @@
+################################################################################
+#
+# libhtp
+#
+################################################################################
+
+LIBHTP_VERSION = 0.5.30
+LIBHTP_SITE = $(call github,OISF,libhtp,$(LIBHTP_VERSION))
+LIBHTP_LICENSE = BSD-3-Clause
+LIBHTP_LICENSE_FILES = LICENSE
+LIBHTP_DEPENDENCIES = \
+ $(if $(BR2_PACKAGE_LIBICONV),libiconv) \
+ zlib
+LIBHTP_INSTALL_STAGING = YES
+# From git
+LIBHTP_AUTORECONF = YES
+
+# Let our gcc/wrapper handle SSP
+LIBHTP_CONF_ENV = NO_STACK_PROTECTOR=true
+
+$(eval $(autotools-package))