Compare commits

...

10 Commits

Author SHA1 Message Date
openeuler-ci-bot
3d2bb1c9da
!32 回合上游补丁,数量:3个
From: @fwo 
Reviewed-by: @openeuler-basic 
Signed-off-by: @openeuler-basic
2024-08-29 01:54:02 +00:00
wangjiang
62fdcec715 add some upstream patchs 2024-08-26 15:47:26 +08:00
openeuler-ci-bot
471a20ebfa
!27 【轻量级PR】help子包声明为noarch
From: @qu_industry 
Reviewed-by: @xujing99 
Signed-off-by: @xujing99
2024-08-23 02:54:33 +00:00
lihuanyu
6109c13713 Add 'Buildarch: noarch' to the help subpackage 2024-08-21 11:10:08 +08:00
openeuler-ci-bot
bb4544b443
!16 fix CVE-2024-40897
From: @wangjiang37 
Reviewed-by: @xujing99 
Signed-off-by: @xujing99
2024-08-01 07:19:09 +00:00
wangjiang
50ef0c3411 fix CVE-2024-40897 2024-08-01 11:29:43 +08:00
openeuler-ci-bot
7a75bf54a8 !2 orc
Merge pull request !2 from syyhao/LTSdev
2020-05-12 09:59:51 +08:00
Yangyang Shen
9ef0cb66f1 upgrade version to 0.4.31 2020-05-11 21:32:45 +08:00
openeuler-ci-bot
c5d03d6ea8 !1 orc
Merge pull request !1 from syyhao/dev
2020-02-15 15:26:21 +08:00
openeuler-basic
4a2006138c enable check of aarch64 2020-02-11 11:22:45 +08:00
8 changed files with 378 additions and 18 deletions

View File

@ -0,0 +1,123 @@
From fb7db9ae3e8ac271651d1884a3611d30bac04a98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
Date: Tue, 9 Jul 2024 12:11:37 +0300
Subject: [PATCH] Use vasprintf() if available for error messages and otherwise
vsnprintf()
vasprintf() is a GNU/BSD extension and would allocate as much memory as required
on the heap, similar to g_strdup_printf(). It's ridiculous that such a function
is still not provided as part of standard C.
If it's not available, use vsnprintf() to at least avoid stack/heap buffer
overflows, which can lead to arbitrary code execution.
Thanks to Noriko Totsuka for reporting.
Fixes JVN#02030803 / JPCERT#92912620 / CVE-2024-40897
Fixes #69
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/191>
---
meson.build | 1 +
orc/orccompiler.c | 6 +++++-
orc/orcparse.c | 28 +++++++++++++++++++++++++---
3 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/meson.build b/meson.build
index 4054c1d..d22c5e7 100644
--- a/meson.build
+++ b/meson.build
@@ -118,6 +118,7 @@ int main() {
'''
cdata.set('HAVE_MONOTONIC_CLOCK', cc.compiles(monotonic_test))
cdata.set('HAVE_GETTIMEOFDAY', cc.has_function('gettimeofday'))
+cdata.set('HAVE_VASPRINTF', cc.has_function('vasprintf'))
cdata.set('HAVE_POSIX_MEMALIGN', cc.has_function('posix_memalign', prefix : '#include <stdlib.h>'))
cdata.set('HAVE_MMAP', cc.has_function('mmap'))
diff --git a/orc/orccompiler.c b/orc/orccompiler.c
index 7f7b4d4..a1c9699 100644
--- a/orc/orccompiler.c
+++ b/orc/orccompiler.c
@@ -1210,8 +1210,12 @@ orc_compiler_error_valist (OrcCompiler *compiler, const char *fmt,
if (compiler->error_msg) return;
+#ifdef HAVE_VASPRINTF
+ vasprintf (&s, fmt, args);
+#else
s = malloc (ORC_COMPILER_ERROR_BUFFER_SIZE);
- vsprintf (s, fmt, args);
+ vsnprintf (s, ORC_COMPILER_ERROR_BUFFER_SIZE, fmt, args);
+#endif
compiler->error_msg = s;
compiler->error = TRUE;
compiler->result = ORC_COMPILE_RESULT_UNKNOWN_COMPILE;
diff --git a/orc/orcparse.c b/orc/orcparse.c
index f46b0be..f90b5ff 100644
--- a/orc/orcparse.c
+++ b/orc/orcparse.c
@@ -16,6 +16,7 @@
* @short_description: Parse Orc source code
*/
+#define ORC_ERROR_LENGTH 256
typedef struct _OrcParser OrcParser;
struct _OrcParser {
@@ -401,11 +402,19 @@ opcode_arg_size (OrcStaticOpcode *opcode, int arg)
static void
orc_parse_log_valist (OrcParser *parser, const char *format, va_list args)
{
- char s[100];
int len;
if (parser->error_program != parser->program) {
- sprintf(s, "In function %s:\n", parser->program->name);
+#ifdef HAVE_VASPRINTF
+ char *s = NULL;
+ asprintf (&s, "In function %s:\n", parser->program->name);
+#elif defined(_UCRT)
+ char s[100] = { '\0' };
+ snprintf_s (s, 100, _TRUNCATE, "In function %s:\n", parser->program->name);
+#else
+ char s[100] = { '\0' };
+ snprintf (s, sizeof (s), "In function %s:\n", parser->program->name);
+#endif
len = strlen(s);
if (parser->log_size + len + 1 >= parser->log_alloc) {
@@ -416,9 +425,18 @@ orc_parse_log_valist (OrcParser *parser, const char *format, va_list args)
strcpy (parser->log + parser->log_size, s);
parser->log_size += len;
parser->error_program = parser->program;
+#ifdef HAVE_VASPRINTF
+ free (s);
+#endif
}
- vsprintf(s, format, args);
+#ifdef HAVE_VASPRINTF
+ char *s;
+ vasprintf (&s, format, args);
+#else
+ char s[ORC_ERROR_LENGTH] = { '\0' };
+ vsnprintf (s, sizeof (s), format, args);
+#endif
len = strlen(s);
if (parser->log_size + len + 1 >= parser->log_alloc) {
@@ -428,6 +446,10 @@ orc_parse_log_valist (OrcParser *parser, const char *format, va_list args)
strcpy (parser->log + parser->log_size, s);
parser->log_size += len;
+
+#ifdef HAVE_VASPRINTF
+ free (s);
+#endif
}
static void
--
2.43.0

View File

@ -0,0 +1,55 @@
From abd75edff9de9a06d0531b9db50963a0da42145c Mon Sep 17 00:00:00 2001
From: "L. E. Segovia" <amy@centricular.com>
Date: Tue, 9 Jul 2024 12:03:53 -0300
Subject: [PATCH] orccompiler, orcparse: Use secure UCRT printing functions on
Windows
See #69
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/191>
---
orc/orccompiler.c | 5 ++++-
orc/orcparse.c | 5 ++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/orc/orccompiler.c b/orc/orccompiler.c
index a1c9699..8131b9c 100644
--- a/orc/orccompiler.c
+++ b/orc/orccompiler.c
@@ -1206,12 +1206,15 @@ static void
orc_compiler_error_valist (OrcCompiler *compiler, const char *fmt,
va_list args)
{
- char *s;
+ char *s = NULL;
if (compiler->error_msg) return;
#ifdef HAVE_VASPRINTF
vasprintf (&s, fmt, args);
+#elif defined(_UCRT)
+ s = malloc (ORC_COMPILER_ERROR_BUFFER_SIZE);
+ vsnprintf_s (s, ORC_COMPILER_ERROR_BUFFER_SIZE, _TRUNCATE, fmt, args);
#else
s = malloc (ORC_COMPILER_ERROR_BUFFER_SIZE);
vsnprintf (s, ORC_COMPILER_ERROR_BUFFER_SIZE, fmt, args);
diff --git a/orc/orcparse.c b/orc/orcparse.c
index f90b5ff..e24f698 100644
--- a/orc/orcparse.c
+++ b/orc/orcparse.c
@@ -431,8 +431,11 @@ orc_parse_log_valist (OrcParser *parser, const char *format, va_list args)
}
#ifdef HAVE_VASPRINTF
- char *s;
+ char *s = NULL;
vasprintf (&s, format, args);
+#elif defined(_UCRT)
+ char s[ORC_ERROR_LENGTH] = { '\0' };
+ vsnprintf_s (s, ORC_ERROR_LENGTH, _TRUNCATE, format, args);
#else
char s[ORC_ERROR_LENGTH] = { '\0' };
vsnprintf (s, sizeof (s), format, args);
--
2.43.0

View File

@ -0,0 +1,31 @@
From 469d72a5f965d28b86e806951932f8cca37e33f3 Mon Sep 17 00:00:00 2001
From: "L. E. Segovia" <amy@centricular.com>
Date: Fri, 3 Nov 2023 17:33:34 -0300
Subject: [PATCH] x86insn: Fix binutils warning when comparing with sized
immediate operand
<source>:359: Warning: no instruction mnemonic suffix given and no register operands; using default for `cmp'
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/126>
---
orc/orcx86insn.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/orc/orcx86insn.c b/orc/orcx86insn.c
index 8df7630c..f6f3a42a 100644
--- a/orc/orcx86insn.c
+++ b/orc/orcx86insn.c
@@ -198,8 +198,8 @@ static const OrcSysOpcode orc_x86_opcodes[] = {
{ "xor", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 6 },
{ "xor", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x33 },
{ "xor", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x31 },
- { "cmp", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 7 },
- { "cmp", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 7 },
+ { "cmpb", ORC_X86_INSN_TYPE_IMM8_REGM, 0, 0x00, 0x83, 7 },
+ { "cmpd", ORC_X86_INSN_TYPE_IMM32_REGM, 0, 0x00, 0x81, 7 },
{ "cmp", ORC_X86_INSN_TYPE_REGM_REG, 0, 0x00, 0x3b },
{ "cmp", ORC_X86_INSN_TYPE_REG_REGM, 0, 0x00, 0x39 },
{ "jo", ORC_X86_INSN_TYPE_BRANCH, 0, 0x00, 0x70 },
--
GitLab

View File

@ -0,0 +1,27 @@
From c8bdf23ec956e6ed3f3b7ca2aeae6df7e8ef0b0f Mon Sep 17 00:00:00 2001
From: "L. E. Segovia" <amy@centricular.com>
Date: Sat, 27 Jan 2024 13:43:00 -0300
Subject: [PATCH] orctarget: Fix default target selection not applying when
retrieving it by name
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/157>
---
orc/orcopcodes.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/orc/orcopcodes.c b/orc/orcopcodes.c
index 3491461d..1d7f0515 100644
--- a/orc/orcopcodes.c
+++ b/orc/orcopcodes.c
@@ -61,7 +61,7 @@ orc_target_get_by_name (const char *name)
{
int i;
- if (name == NULL) return default_target;
+ if (name == NULL) return orc_target_get_default();
for(i=0;i<n_targets;i++){
if (strcmp (name, targets[i]->name) == 0) {
--
GitLab

View File

@ -0,0 +1,109 @@
From d34eb15b61079415dbac7fdb74fcb08949a8acae Mon Sep 17 00:00:00 2001
From: "L. E. Segovia" <amy@centricular.com>
Date: Fri, 3 Nov 2023 17:46:16 -0300
Subject: [PATCH] orc: Fix warning because of a mismatched OrcExecutor function
signature
Fixes warning C4113 in MSVC:
> testsuite/orcc/testorc.c(27292): warning C4113: 'void (__cdecl *)(OrcExecutor *restrict )' differs in parameter lists from 'OrcExecutorFunc'
The ORC_RESTRICT definition was extracted from orcprogram-c.c.
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/118>
---
orc/orcexecutor.c | 4 ++--
orc/orcexecutor.h | 3 ++-
orc/orcutils.h | 12 ++++++++++++
testsuite/memcpy_speed.c | 2 +-
tools/orcc.c | 2 +-
5 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/orc/orcexecutor.c b/orc/orcexecutor.c
index 116220c0..9035f4e9 100644
--- a/orc/orcexecutor.c
+++ b/orc/orcexecutor.c
@@ -39,7 +39,7 @@ orc_executor_free (OrcExecutor *ex)
void
orc_executor_run (OrcExecutor *ex)
{
- void (*func) (OrcExecutor *);
+ OrcExecutorFunc func = NULL;
if (ex->program) {
func = ex->program->code_exec;
@@ -58,7 +58,7 @@ orc_executor_run (OrcExecutor *ex)
void
orc_executor_run_backup (OrcExecutor *ex)
{
- void (*func) (OrcExecutor *);
+ OrcExecutorFunc func = NULL;
if (ex->program) {
func = ex->program->backup_func;
diff --git a/orc/orcexecutor.h b/orc/orcexecutor.h
index 5de559b4..eeb55448 100644
--- a/orc/orcexecutor.h
+++ b/orc/orcexecutor.h
@@ -16,7 +16,8 @@ typedef struct _OrcExecutorAlt OrcExecutorAlt;
typedef void (*OrcOpcodeEmulateFunc)(OrcOpcodeExecutor *ex, void *user);
typedef void (*OrcOpcodeEmulateNFunc)(OrcOpcodeExecutor *ex, int index, int n);
typedef void (*OrcOpcodeEmulate16Func)(OrcOpcodeExecutor *ex);
-typedef void (*OrcExecutorFunc)(OrcExecutor *ex);
+
+typedef void (*OrcExecutorFunc)(OrcExecutor * ORC_RESTRICT ex);
/**
* OrcOpcodeExecutor:
diff --git a/orc/orcutils.h b/orc/orcutils.h
index f0475748..5df79dea 100644
--- a/orc/orcutils.h
+++ b/orc/orcutils.h
@@ -222,6 +222,18 @@ typedef unsigned int orc_bool;
#define ORC_API ORC_API_IMPORT
#endif
+#ifndef ORC_RESTRICT
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#define ORC_RESTRICT restrict
+#elif defined(__GNUC__) && __GNUC__ >= 4
+#define ORC_RESTRICT __restrict__
+#elif defined(_MSC_VER)
+#define ORC_RESTRICT __restrict
+#else
+#define ORC_RESTRICT
+#endif
+#endif
+
ORC_BEGIN_DECLS
#ifdef ORC_ENABLE_UNSTABLE_API
diff --git a/testsuite/memcpy_speed.c b/testsuite/memcpy_speed.c
index a3089dae..e5ff2c3f 100644
--- a/testsuite/memcpy_speed.c
+++ b/testsuite/memcpy_speed.c
@@ -124,7 +124,7 @@ main(int argc, char *argv[])
orc_profile_init (&prof);
for(j=0;j<10;j++){
OrcExecutor _ex, *ex = &_ex;
- void (*func) (OrcExecutor *);
+ OrcExecutorFunc func = NULL;
orc_profile_start(&prof);
/* orc_memcpy (dest, src, size); */
diff --git a/tools/orcc.c b/tools/orcc.c
index 95b8c54e..33db66f4 100644
--- a/tools/orcc.c
+++ b/tools/orcc.c
@@ -898,7 +898,7 @@ output_code_execute (OrcProgram *p, FILE *output, int is_inline)
fprintf(output, " static OrcProgram *p = 0;\n");
}
}
- fprintf(output, " void (*func) (OrcExecutor *);\n");
+ fprintf(output, " OrcExecutorFunc func = NULL;\n");
fprintf(output, "\n");
if (use_lazy_init) {
fprintf(output, " if (!p_inited) {\n");
--
GitLab

Binary file not shown.

BIN
orc-0.4.31.tar.xz Normal file

Binary file not shown.

View File

@ -1,12 +1,19 @@
Name: orc
Version: 0.4.28
Name: orc
Version: 0.4.31
Release: 4
Summary: The Oil Run-time Compiler
License: BSD
URL: http://cgit.freedesktop.org/gstreamer/orc/
URL: http://cgit.freedesktop.org/gstreamer/orc/
Source0: http://gstreamer.freedesktop.org/src/orc/%{name}-%{version}.tar.xz
Patch6000: backport-0001-CVE-2024-40897.patch
Patch6001: backport-0002-CVE-2024-40897.patch
Patch6002: backport-Fix-warning-because-of-a-mismatched-OrcExecutor-function-signature.patch
Patch6003: backport-Fix-binutils-warning-when-comparing-with-sized-immediate-operand.patch
Patch6004: backport-Fix-default-target-selection-not-applying-when-retrieving-it-by-name.patch
BuildRequires: gtk-doc libtool
BuildRequires: meson >= 0.47.0
%description
Orc is the sucessor to Liboil - The Library of Optimized Inner Loops.
@ -18,6 +25,7 @@ subtraction, and many arithmetic operations.
%package help
Summary: Help documentation for Orc
Buildarch: noarch
Requires: %{name} = %{version}-%{release}
%description help
@ -41,25 +49,16 @@ The Orc compiler.
%prep
%autosetup -n %{name}-%{version} -p1
gtkdocize --copy
NOCONFIGURE=1 autoreconf -vif
%build
%configure \
--disable-static \
--enable-gtk-doc \
--enable-user-codemem \
--disable-gtk-doc-html
%make_build V=1
%meson -D default_library=shared
%meson_build
%install
%make_install INSTALL="install -p"
touch -r stamp-h1 %{buildroot}%{_includedir}/%{name}-0.4/orc/orc-stdint.h
%meson_install
%check
%ifnarch i686 aarch64
make check
%endif
%meson_test
%post
/sbin/ldconfig
@ -75,10 +74,11 @@ make check
%files devel
%{_libdir}/liborc-*.so
%{_libdir}/pkgconfig/orc-0.4.pc
%{_libdir}/pkgconfig/orc-test-0.4.pc
%{_datadir}/aclocal/orc.m4
%{_includedir}/%{name}-0.4/
%doc examples/*.c
%exclude %{_libdir}/*.la
%exclude %{_libdir}/*.a
%files compiler
%{_bindir}/orcc
@ -87,5 +87,20 @@ make check
%doc %{_datadir}/gtk-doc/html/orc/
%changelog
* Mon Aug 12 2019 openEuler Buildteam <buildteam@openeuler.org> - 0.4.28-3
* Mon Aug 26 2024 wangjiang <wangjiang37@h-partners.com> - 0.4.31-4
- add some upstream patchs
* Wed Aug 21 2024 Huanyu Li <lihuanyu@cqsoftware.com.cn> - 0.4.31-3
- Add 'Buildarch: noarch' to the help subpackage
* Thu Aug 01 2024 wangjiang <wangjiang37@h-partners.com> - 0.4.31-2
- fix CVE-2024-40897
* Fri Apr 24 2020 openEuler Buildteam <buildteam@openeuler.org> - 0.4.31-1
- Upgrade version to 0.4.31
* Tue Feb 11 2020 openEuler Buildteam <buildteam@openeuler.org> - 0.4.28-5
- Enable check on aarch64
* Mon Aug 12 2019 openEuler Buildteam <buildteam@openeuler.org> - 0.4.28-4
- Package init