diff options
Diffstat (limited to 'meta/recipes-extended/ghostscript/ghostscript')
33 files changed, 1089 insertions, 790 deletions
diff --git a/meta/recipes-extended/ghostscript/ghostscript/0001-Bug-706897-Copy-pcx-buffer-overrun-fix-from-devices-.patch b/meta/recipes-extended/ghostscript/ghostscript/0001-Bug-706897-Copy-pcx-buffer-overrun-fix-from-devices-.patch new file mode 100644 index 0000000000..91b9f6df50 --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/0001-Bug-706897-Copy-pcx-buffer-overrun-fix-from-devices-.patch @@ -0,0 +1,31 @@ +From d81b82c70bc1fb9991bb95f1201abb5dea55f57f Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Mon, 17 Jul 2023 14:06:37 +0100 +Subject: [PATCH] Bug 706897: Copy pcx buffer overrun fix from + devices/gdevpcx.c + +Bounds check the buffer, before dereferencing the pointer. + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=d81b82c70bc1fb9991bb95f1201abb5dea55f57f] +CVE: CVE-2023-38559 +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + base/gdevdevn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/base/gdevdevn.c b/base/gdevdevn.c +index 3b019d6..2888776 100644 +--- a/base/gdevdevn.c ++++ b/base/gdevdevn.c +@@ -1980,7 +1980,7 @@ devn_pcx_write_rle(const byte * from, const byte * end, int step, gp_file * file + byte data = *from; + + from += step; +- if (data != *from || from == end) { ++ if (from >= end || data != *from) { + if (data >= 0xc0) + gp_fputc(0xc1, file); + } else { +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14869-0001.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14869-0001.patch deleted file mode 100644 index 715ec1c450..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/CVE-2019-14869-0001.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 485904772c5f0aa1140032746e5a0abfc40f4cef Mon Sep 17 00:00:00 2001 -From: Chris Liddell <chris.liddell@artifex.com> -Date: Tue, 5 Nov 2019 09:45:27 +0000 -Subject: [PATCH] Bug 701841: remove .forceput from /.charkeys - -When loading Type 1 or Truetype fonts from disk, we attempt to extend the glyph -name table to include all identifiable glyph names from the Adobe Glyph List. - -In the case of Type 1 fonts, the font itself (almost always) marks the -CharStrings dictionary as read-only, hence we have to use .forceput for that -case. - -But for Truetype fonts, the CharStrings dictionary is created internally and is -not read-only until *after* we have fully populated it (including the extended -glyph names from the AGL), hence there is no need for .forceput, and no need to -carry the security risk of using it. - -Replace with regular put. - -CVE: CVE-2019-14869 -Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git] - -Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com> ---- - Resource/Init/gs_ttf.ps | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/Resource/Init/gs_ttf.ps b/Resource/Init/gs_ttf.ps -index e34967d..5354ff0 100644 ---- a/Resource/Init/gs_ttf.ps -+++ b/Resource/Init/gs_ttf.ps -@@ -1301,7 +1301,7 @@ currentdict /.pickcmap_with_no_xlatmap .undef - TTFDEBUG { (\n1 setting alias: ) print dup ==only - ( to be the same as ) print 2 index //== exec } if - -- 7 index 2 index 3 -1 roll exch .forceput -+ 7 index 2 index 3 -1 roll exch put - } forall - pop pop pop - } -@@ -1319,7 +1319,7 @@ currentdict /.pickcmap_with_no_xlatmap .undef - exch pop - TTFDEBUG { (\n2 setting alias: ) print 1 index ==only - ( to use glyph index: ) print dup //== exec } if -- 5 index 3 1 roll .forceput -+ 5 index 3 1 roll put - //false - } - { -@@ -1336,7 +1336,7 @@ currentdict /.pickcmap_with_no_xlatmap .undef - { % CharStrings(dict) isunicode(boolean) cmap(dict) RAGL(dict) gname(name) codep(integer) gindex(integer) - TTFDEBUG { (\3 nsetting alias: ) print 1 index ==only - ( to be index: ) print dup //== exec } if -- exch pop 5 index 3 1 roll .forceput -+ exch pop 5 index 3 1 roll put - } - { - pop pop -@@ -1366,7 +1366,7 @@ currentdict /.pickcmap_with_no_xlatmap .undef - } ifelse - ] - TTFDEBUG { (Encoding: ) print dup === flush } if --} .bind executeonly odef % hides .forceput -+} .bind odef - - % ---------------- CIDFontType 2 font loading ---------------- % - --- -2.20.1 - diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2020-15900.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2020-15900.patch new file mode 100644 index 0000000000..d7c5f034e5 --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2020-15900.patch @@ -0,0 +1,54 @@ +From 5d499272b95a6b890a1397e11d20937de000d31b Mon Sep 17 00:00:00 2001 +From: Ray Johnston <ray.johnston@artifex.com> +Date: Wed, 22 Jul 2020 09:57:54 -0700 +Subject: [PATCH] Bug 702582, CVE 2020-15900 Memory Corruption in Ghostscript + 9.52 + +Fix the 'rsearch' calculation for the 'post' size to give the correct +size. Previous calculation would result in a size that was too large, +and could underflow to max uint32_t. Also fix 'rsearch' to return the +correct 'pre' string with empty string match. + +A future change may 'undefine' this undocumented, non-standard operator +during initialization as we do with the many other non-standard internal +PostScript operators and procedures. + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5d499272b95a6b890a1397e11d20937de000d31b] +CVE: CVE-2020-15900 +Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com> +--- + psi/zstring.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/psi/zstring.c b/psi/zstring.c +index 33662dafa..58e1af2b3 100644 +--- a/psi/zstring.c ++++ b/psi/zstring.c +@@ -142,13 +142,18 @@ search_impl(i_ctx_t *i_ctx_p, bool forward) + return 0; + found: + op->tas.type_attrs = op1->tas.type_attrs; +- op->value.bytes = ptr; +- r_set_size(op, size); ++ op->value.bytes = ptr; /* match */ ++ op->tas.rsize = size; /* match */ + push(2); +- op[-1] = *op1; +- r_set_size(op - 1, ptr - op[-1].value.bytes); +- op1->value.bytes = ptr + size; +- r_set_size(op1, count + (!forward ? (size - 1) : 0)); ++ op[-1] = *op1; /* pre */ ++ op[-3].value.bytes = ptr + size; /* post */ ++ if (forward) { ++ op[-1].tas.rsize = ptr - op[-1].value.bytes; /* pre */ ++ op[-3].tas.rsize = count; /* post */ ++ } else { ++ op[-1].tas.rsize = count; /* pre */ ++ op[-3].tas.rsize -= count + size; /* post */ ++ } + make_true(op); + return 0; + } +-- +2.17.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2020-36773.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2020-36773.patch new file mode 100644 index 0000000000..ea8bf26f3f --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2020-36773.patch @@ -0,0 +1,109 @@ +From 8c7bd787defa071c96289b7da9397f673fddb874 Mon Sep 17 00:00:00 2001 +From: Ken Sharp <ken.sharp@artifex.com> +Date: Wed, 20 May 2020 16:02:07 +0100 +Subject: [PATCH] txtwrite - address memory problems + +Bug #702229 " txtwrite: use after free in 9.51 on some files (regression from 9.50)" +Also bug #702346 and the earlier report #701877. + +The problems occur because its possible for a single character code in +a PDF file to map to more than a single Unicode code point. In the case +of the file for 701877 the character code maps to 'f' and 'i' (it is an +fi ligature). + +The code should deal with this, but we need to ensure we are using the +correct index. In addition, if we do get more Unicode code points than +we expected, we need to set the widths of the 'extra' code points to +zero (we only want to consider the width of the original character). + +This does mean increasing the size of the Widths array to cater for +the possibility of more entries on output than there were on input. + +While working on it I noticed that the Unicode remapping on little- +endian machines was reversing the order of the Unicode values, when +there was more than a single code point returned, so fixed that at +the same time. + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;h=8c7bd787defa071c96289b7da9397f673fddb874] +CVE: CVE-2020-36773 +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + devices/vector/gdevtxtw.c | 26 ++++++++++++++++---------- + 1 file changed, 16 insertions(+), 10 deletions(-) + +diff --git a/devices/vector/gdevtxtw.c b/devices/vector/gdevtxtw.c +index 87f9355..bddce5a 100644 +--- a/devices/vector/gdevtxtw.c ++++ b/devices/vector/gdevtxtw.c +@@ -1812,11 +1812,11 @@ static int get_unicode(textw_text_enum_t *penum, gs_font *font, gs_glyph glyph, + #else + b = (char *)Buffer; + u = (char *)unicode; +- while (l >= 0) { +- *b++ = *(u + l); +- l--; +- } + ++ for (l=0;l<length;l+=2, u+=2){ ++ *b++ = *(u+1); ++ *b++ = *u; ++ } + #endif + gs_free_object(penum->dev->memory, unicode, "free temporary unicode buffer"); + return length / sizeof(short); +@@ -1963,7 +1963,7 @@ txtwrite_process_plain_text(gs_text_enum_t *pte) + &penum->text_state->matrix, &wanted); + pte->returned.total_width.x += wanted.x; + pte->returned.total_width.y += wanted.y; +- penum->Widths[pte->index - 1] = wanted.x; ++ penum->Widths[penum->TextBufferIndex] = wanted.x; + + if (pte->text.operation & TEXT_ADD_TO_ALL_WIDTHS) { + gs_point tpt; +@@ -1984,8 +1984,14 @@ txtwrite_process_plain_text(gs_text_enum_t *pte) + pte->returned.total_width.x += dpt.x; + pte->returned.total_width.y += dpt.y; + +- penum->TextBufferIndex += get_unicode(penum, (gs_font *)pte->orig_font, glyph, ch, &penum->TextBuffer[penum->TextBufferIndex]); +- penum->Widths[pte->index - 1] += dpt.x; ++ penum->Widths[penum->TextBufferIndex] += dpt.x; ++ code = get_unicode(penum, (gs_font *)pte->orig_font, glyph, ch, &penum->TextBuffer[penum->TextBufferIndex]); ++ /* If a single text code returned multiple Unicode values, then we need to set the ++ * 'extra' code points' widths to 0. ++ */ ++ if (code > 1) ++ memset(&penum->Widths[penum->TextBufferIndex + 1], 0x00, (code - 1) * sizeof(float)); ++ penum->TextBufferIndex += code; + } + return 0; + } +@@ -2123,7 +2129,7 @@ txt_add_fragment(gx_device_txtwrite_t *tdev, textw_text_enum_t *penum) + if (!penum->text_state->Widths) + return gs_note_error(gs_error_VMerror); + memset(penum->text_state->Widths, 0x00, penum->TextBufferIndex * sizeof(float)); +- memcpy(penum->text_state->Widths, penum->Widths, penum->text.size * sizeof(float)); ++ memcpy(penum->text_state->Widths, penum->Widths, penum->TextBufferIndex * sizeof(float)); + + unsorted_entry->Unicode_Text = (unsigned short *)gs_malloc(tdev->memory->stable_memory, + penum->TextBufferIndex, sizeof(unsigned short), "txtwrite alloc sorted text buffer"); +@@ -2136,7 +2142,7 @@ txt_add_fragment(gx_device_txtwrite_t *tdev, textw_text_enum_t *penum) + if (!unsorted_entry->Widths) + return gs_note_error(gs_error_VMerror); + memset(unsorted_entry->Widths, 0x00, penum->TextBufferIndex * sizeof(float)); +- memcpy(unsorted_entry->Widths, penum->Widths, penum->text.size * sizeof(float)); ++ memcpy(unsorted_entry->Widths, penum->Widths, penum->TextBufferIndex * sizeof(float)); + + unsorted_entry->FontName = (char *)gs_malloc(tdev->memory->stable_memory, + (strlen(penum->text_state->FontName) + 1), sizeof(unsigned char), "txtwrite alloc sorted text buffer"); +@@ -2192,7 +2198,7 @@ textw_text_process(gs_text_enum_t *pte) + if (!penum->TextBuffer) + return gs_note_error(gs_error_VMerror); + penum->Widths = (float *)gs_malloc(tdev->memory->stable_memory, +- pte->text.size, sizeof(float), "txtwrite temporary widths array"); ++ pte->text.size * 4, sizeof(float), "txtwrite temporary widths array"); + if (!penum->Widths) + return gs_note_error(gs_error_VMerror); + } +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_1.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_1.patch new file mode 100644 index 0000000000..033ba77f9a --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_1.patch @@ -0,0 +1,121 @@ +From 3920a727fb19e19f597e518610ce2416d08cb75f Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Thu, 20 Aug 2020 17:19:09 +0100 +Subject: [PATCH] Fix pdfwrite "%d" mode with file permissions + +Firstly, in gx_device_delete_output_file the iodev pointer was being passed +to the delete_method incorrectly (passing a pointer to that pointer). Thus +when we attempted to use that to confirm permission to delete the file, it +crashed. Credit to Ken for finding that. + +Secondly, due to the way pdfwrite works, when running with an output file per +page, it creates the current output file immediately it has completed writing +the previous one. Thus, it has to delete that partial file on exit. + +Previously, the output file was not added to the "control" permission list, +so an attempt to delete it would result in an error. So add the output file +to the "control" as well as "write" list. + +CVE: CVE-2021-3781 + +Upstream-Status: Backport: +https://git.ghostscript.com/?p=ghostpdl.git;a=commit;f=base/gslibctx.c;h=3920a727fb19e19f597e518610ce2416d08cb75f + +Signed-off-by: Davide Gardenal <davide.gardenal@huawei.com> +--- + base/gsdevice.c | 2 +- + base/gslibctx.c | 20 ++++++++++++++------ + 2 files changed, 15 insertions(+), 7 deletions(-) + +diff --git a/base/gsdevice.c b/base/gsdevice.c +index 913119495..ac78af93f 100644 +--- a/base/gsdevice.c ++++ b/base/gsdevice.c +@@ -1185,7 +1185,7 @@ int gx_device_delete_output_file(const gx_device * dev, const char *fname) + parsed.len = strlen(parsed.fname); + } + if (parsed.iodev) +- code = parsed.iodev->procs.delete_file((gx_io_device *)(&parsed.iodev), (const char *)parsed.fname); ++ code = parsed.iodev->procs.delete_file((gx_io_device *)(parsed.iodev), (const char *)parsed.fname); + else + code = gs_note_error(gs_error_invalidfileaccess); + +diff --git a/base/gslibctx.c b/base/gslibctx.c +index d726c58b5..ff8fc895e 100644 +--- a/base/gslibctx.c ++++ b/base/gslibctx.c +@@ -647,7 +647,7 @@ gs_add_outputfile_control_path(gs_memory_t *mem, const char *fname) + char *fp, f[gp_file_name_sizeof]; + const int pipe = 124; /* ASCII code for '|' */ + const int len = strlen(fname); +- int i; ++ int i, code; + + /* Be sure the string copy will fit */ + if (len >= gp_file_name_sizeof) +@@ -658,8 +658,6 @@ gs_add_outputfile_control_path(gs_memory_t *mem, const char *fname) + rewrite_percent_specifiers(f); + for (i = 0; i < len; i++) { + if (f[i] == pipe) { +- int code; +- + fp = &f[i + 1]; + /* Because we potentially have to check file permissions at two levels + for the output file (gx_device_open_output_file and the low level +@@ -671,10 +669,16 @@ gs_add_outputfile_control_path(gs_memory_t *mem, const char *fname) + if (code < 0) + return code; + break; ++ code = gs_add_control_path(mem, gs_permit_file_control, f); ++ if (code < 0) ++ return code; + } + if (!IS_WHITESPACE(f[i])) + break; + } ++ code = gs_add_control_path(mem, gs_permit_file_control, fp); ++ if (code < 0) ++ return code; + return gs_add_control_path(mem, gs_permit_file_writing, fp); + } + +@@ -684,7 +688,7 @@ gs_remove_outputfile_control_path(gs_memory_t *mem, const char *fname) + char *fp, f[gp_file_name_sizeof]; + const int pipe = 124; /* ASCII code for '|' */ + const int len = strlen(fname); +- int i; ++ int i, code; + + /* Be sure the string copy will fit */ + if (len >= gp_file_name_sizeof) +@@ -694,8 +698,6 @@ gs_remove_outputfile_control_path(gs_memory_t *mem, const char *fname) + /* Try to rewrite any %d (or similar) in the string */ + for (i = 0; i < len; i++) { + if (f[i] == pipe) { +- int code; +- + fp = &f[i + 1]; + /* Because we potentially have to check file permissions at two levels + for the output file (gx_device_open_output_file and the low level +@@ -704,6 +706,9 @@ gs_remove_outputfile_control_path(gs_memory_t *mem, const char *fname) + the pipe_fopen(), the leading '|' has been stripped. + */ + code = gs_remove_control_path(mem, gs_permit_file_writing, f); ++ if (code < 0) ++ return code; ++ code = gs_remove_control_path(mem, gs_permit_file_control, f); + if (code < 0) + return code; + break; +@@ -711,6 +716,9 @@ gs_remove_outputfile_control_path(gs_memory_t *mem, const char *fname) + if (!IS_WHITESPACE(f[i])) + break; + } ++ code = gs_remove_control_path(mem, gs_permit_file_control, fp); ++ if (code < 0) ++ return code; + return gs_remove_control_path(mem, gs_permit_file_writing, fp); + } + +-- +2.25.1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_2.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_2.patch new file mode 100644 index 0000000000..beade79eef --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_2.patch @@ -0,0 +1,37 @@ +From 9daf042fd7bb19e93388d89d9686a2fa4496f382 Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Mon, 24 Aug 2020 09:24:31 +0100 +Subject: [PATCH] Coverity 361429: move "break" to correct place. + +We had to add the outputfile to the "control" file permission list (as well +as write), but for the "pipe" case, I accidentally added the call after the +break out of loop that checks for a pipe. + +CVE: CVE-2021-3781 + +Upstream-Status: Backport: +https://git.ghostscript.com/?p=ghostpdl.git;a=commit;f=base/gslibctx.c;h=9daf042fd7bb19e93388d89d9686a2fa4496f382 + +Signed-off-by: Davide Gardenal <davide.gardenal@huawei.com> +--- + base/gslibctx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/base/gslibctx.c b/base/gslibctx.c +index ff8fc895e..63dfbe2e0 100644 +--- a/base/gslibctx.c ++++ b/base/gslibctx.c +@@ -668,10 +668,10 @@ gs_add_outputfile_control_path(gs_memory_t *mem, const char *fname) + code = gs_add_control_path(mem, gs_permit_file_writing, f); + if (code < 0) + return code; +- break; + code = gs_add_control_path(mem, gs_permit_file_control, f); + if (code < 0) + return code; ++ break; + } + if (!IS_WHITESPACE(f[i])) + break; +-- +2.25.1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_3.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_3.patch new file mode 100644 index 0000000000..e3f9e81c45 --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-3781_3.patch @@ -0,0 +1,238 @@ +From a9bd3dec9fde03327a4a2c69dad1036bf9632e20 Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Tue, 7 Sep 2021 20:36:12 +0100 +Subject: [PATCH] Bug 704342: Include device specifier strings in access + validation + +for the "%pipe%", %handle%" and %printer% io devices. + +We previously validated only the part after the "%pipe%" Postscript device +specifier, but this proved insufficient. + +This rebuilds the original file name string, and validates it complete. The +slight complication for "%pipe%" is it can be reached implicitly using +"|" so we have to check both prefixes. + +Addresses CVE-2021-3781 + +CVE: CVE-2021-3781 + +Upstream-Status: Backport: +https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a9bd3dec9fde + +Signed-off-by: Davide Gardenal <davide.gardenal@huawei.com> +--- + base/gdevpipe.c | 22 +++++++++++++++- + base/gp_mshdl.c | 11 +++++++- + base/gp_msprn.c | 10 ++++++- + base/gp_os2pr.c | 13 +++++++++- + base/gslibctx.c | 69 ++++++++++--------------------------------------- + 5 files changed, 65 insertions(+), 60 deletions(-) + +diff --git a/base/gdevpipe.c b/base/gdevpipe.c +index 96d71f5d8..5bdc485be 100644 +--- a/base/gdevpipe.c ++++ b/base/gdevpipe.c +@@ -72,8 +72,28 @@ pipe_fopen(gx_io_device * iodev, const char *fname, const char *access, + #else + gs_lib_ctx_t *ctx = mem->gs_lib_ctx; + gs_fs_list_t *fs = ctx->core->fs; ++ /* The pipe device can be reached in two ways, explicltly with %pipe% ++ or implicitly with "|", so we have to check for both ++ */ ++ char f[gp_file_name_sizeof]; ++ const char *pipestr = "|"; ++ const size_t pipestrlen = strlen(pipestr); ++ const size_t preflen = strlen(iodev->dname); ++ const size_t nlen = strlen(fname); ++ int code1; ++ ++ if (preflen + nlen >= gp_file_name_sizeof) ++ return_error(gs_error_invalidaccess); ++ ++ memcpy(f, iodev->dname, preflen); ++ memcpy(f + preflen, fname, nlen + 1); ++ ++ code1 = gp_validate_path(mem, f, access); ++ ++ memcpy(f, pipestr, pipestrlen); ++ memcpy(f + pipestrlen, fname, nlen + 1); + +- if (gp_validate_path(mem, fname, access) != 0) ++ if (code1 != 0 && gp_validate_path(mem, f, access) != 0 ) + return gs_error_invalidfileaccess; + + /* +diff --git a/base/gp_mshdl.c b/base/gp_mshdl.c +index 2b964ed74..8d87ceadc 100644 +--- a/base/gp_mshdl.c ++++ b/base/gp_mshdl.c +@@ -95,8 +95,17 @@ mswin_handle_fopen(gx_io_device * iodev, const char *fname, const char *access, + long hfile; /* Correct for Win32, may be wrong for Win64 */ + gs_lib_ctx_t *ctx = mem->gs_lib_ctx; + gs_fs_list_t *fs = ctx->core->fs; ++ char f[gp_file_name_sizeof]; ++ const size_t preflen = strlen(iodev->dname); ++ const size_t nlen = strlen(fname); + +- if (gp_validate_path(mem, fname, access) != 0) ++ if (preflen + nlen >= gp_file_name_sizeof) ++ return_error(gs_error_invalidaccess); ++ ++ memcpy(f, iodev->dname, preflen); ++ memcpy(f + preflen, fname, nlen + 1); ++ ++ if (gp_validate_path(mem, f, access) != 0) + return gs_error_invalidfileaccess; + + /* First we try the open_handle method. */ +diff --git a/base/gp_msprn.c b/base/gp_msprn.c +index ed4827968..746a974f7 100644 +--- a/base/gp_msprn.c ++++ b/base/gp_msprn.c +@@ -168,8 +168,16 @@ mswin_printer_fopen(gx_io_device * iodev, const char *fname, const char *access, + unsigned long *ptid = &((tid_t *)(iodev->state))->tid; + gs_lib_ctx_t *ctx = mem->gs_lib_ctx; + gs_fs_list_t *fs = ctx->core->fs; ++ const size_t preflen = strlen(iodev->dname); ++ const size_t nlen = strlen(fname); + +- if (gp_validate_path(mem, fname, access) != 0) ++ if (preflen + nlen >= gp_file_name_sizeof) ++ return_error(gs_error_invalidaccess); ++ ++ memcpy(pname, iodev->dname, preflen); ++ memcpy(pname + preflen, fname, nlen + 1); ++ ++ if (gp_validate_path(mem, pname, access) != 0) + return gs_error_invalidfileaccess; + + /* First we try the open_printer method. */ +diff --git a/base/gp_os2pr.c b/base/gp_os2pr.c +index f852c71fc..ba54cde66 100644 +--- a/base/gp_os2pr.c ++++ b/base/gp_os2pr.c +@@ -107,9 +107,20 @@ os2_printer_fopen(gx_io_device * iodev, const char *fname, const char *access, + FILE ** pfile, char *rfname, uint rnamelen) + { + os2_printer_t *pr = (os2_printer_t *)iodev->state; +- char driver_name[256]; ++ char driver_name[gp_file_name_sizeof]; + gs_lib_ctx_t *ctx = mem->gs_lib_ctx; + gs_fs_list_t *fs = ctx->core->fs; ++ const size_t preflen = strlen(iodev->dname); ++ const int size_t = strlen(fname); ++ ++ if (preflen + nlen >= gp_file_name_sizeof) ++ return_error(gs_error_invalidaccess); ++ ++ memcpy(driver_name, iodev->dname, preflen); ++ memcpy(driver_name + preflen, fname, nlen + 1); ++ ++ if (gp_validate_path(mem, driver_name, access) != 0) ++ return gs_error_invalidfileaccess; + + /* First we try the open_printer method. */ + /* Note that the loop condition here ensures we don't +diff --git a/base/gslibctx.c b/base/gslibctx.c +index 6dfed6cd5..318039fad 100644 +--- a/base/gslibctx.c ++++ b/base/gslibctx.c +@@ -655,82 +655,39 @@ rewrite_percent_specifiers(char *s) + int + gs_add_outputfile_control_path(gs_memory_t *mem, const char *fname) + { +- char *fp, f[gp_file_name_sizeof]; +- const int pipe = 124; /* ASCII code for '|' */ +- const int len = strlen(fname); +- int i, code; ++ char f[gp_file_name_sizeof]; ++ int code; + + /* Be sure the string copy will fit */ +- if (len >= gp_file_name_sizeof) ++ if (strlen(fname) >= gp_file_name_sizeof) + return gs_error_rangecheck; + strcpy(f, fname); +- fp = f; + /* Try to rewrite any %d (or similar) in the string */ + rewrite_percent_specifiers(f); +- for (i = 0; i < len; i++) { +- if (f[i] == pipe) { +- fp = &f[i + 1]; +- /* Because we potentially have to check file permissions at two levels +- for the output file (gx_device_open_output_file and the low level +- fopen API, if we're using a pipe, we have to add both the full string, +- (including the '|', and just the command to which we pipe - since at +- the pipe_fopen(), the leading '|' has been stripped. +- */ +- code = gs_add_control_path(mem, gs_permit_file_writing, f); +- if (code < 0) +- return code; +- code = gs_add_control_path(mem, gs_permit_file_control, f); +- if (code < 0) +- return code; +- break; +- } +- if (!IS_WHITESPACE(f[i])) +- break; +- } +- code = gs_add_control_path(mem, gs_permit_file_control, fp); ++ ++ code = gs_add_control_path(mem, gs_permit_file_control, f); + if (code < 0) + return code; +- return gs_add_control_path(mem, gs_permit_file_writing, fp); ++ return gs_add_control_path(mem, gs_permit_file_writing, f); + } + + int + gs_remove_outputfile_control_path(gs_memory_t *mem, const char *fname) + { +- char *fp, f[gp_file_name_sizeof]; +- const int pipe = 124; /* ASCII code for '|' */ +- const int len = strlen(fname); +- int i, code; ++ char f[gp_file_name_sizeof]; ++ int code; + + /* Be sure the string copy will fit */ +- if (len >= gp_file_name_sizeof) ++ if (strlen(fname) >= gp_file_name_sizeof) + return gs_error_rangecheck; + strcpy(f, fname); +- fp = f; + /* Try to rewrite any %d (or similar) in the string */ +- for (i = 0; i < len; i++) { +- if (f[i] == pipe) { +- fp = &f[i + 1]; +- /* Because we potentially have to check file permissions at two levels +- for the output file (gx_device_open_output_file and the low level +- fopen API, if we're using a pipe, we have to add both the full string, +- (including the '|', and just the command to which we pipe - since at +- the pipe_fopen(), the leading '|' has been stripped. +- */ +- code = gs_remove_control_path(mem, gs_permit_file_writing, f); +- if (code < 0) +- return code; +- code = gs_remove_control_path(mem, gs_permit_file_control, f); +- if (code < 0) +- return code; +- break; +- } +- if (!IS_WHITESPACE(f[i])) +- break; +- } +- code = gs_remove_control_path(mem, gs_permit_file_control, fp); ++ rewrite_percent_specifiers(f); ++ ++ code = gs_remove_control_path(mem, gs_permit_file_control, f); + if (code < 0) + return code; +- return gs_remove_control_path(mem, gs_permit_file_writing, fp); ++ return gs_remove_control_path(mem, gs_permit_file_writing, f); + } + + int +-- +2.25.1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-45949.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-45949.patch new file mode 100644 index 0000000000..f312f89e04 --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2021-45949.patch @@ -0,0 +1,65 @@ +From 6643ff0cb837db3eade489ffff21e3e92eee2ae0 Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Fri, 28 Jan 2022 08:21:19 +0000 +Subject: [PATCH] [PATCH] Bug 703902: Fix op stack management in + sampled_data_continue() + +Replace pop() (which does no checking, and doesn't handle stack extension +blocks) with ref_stack_pop() which does do all that. + +We still use pop() in one case (it's faster), but we have to later use +ref_stack_pop() before calling sampled_data_sample() which also accesses the +op stack. + +Fixes: +https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=34675 + +Upstream-Status: Backported [https://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=2a3129365d3bc0d4a41f107ef175920d1505d1f7] +CVE: CVE-2021-45949 +Signed-off-by: Minjae Kim <flowergom@gmail.com> +--- + psi/zfsample.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/psi/zfsample.c b/psi/zfsample.c +index 0023fa4..f84671f 100644 +--- a/psi/zfsample.c ++++ b/psi/zfsample.c +@@ -534,14 +534,17 @@ sampled_data_continue(i_ctx_t *i_ctx_p) + data_ptr[bps * i + j] = (byte)(cv >> ((bps - 1 - j) * 8)); /* MSB first */ + } + pop(num_out); /* Move op to base of result values */ +- ++ /* From here on, we have to use ref_stack_pop() rather than pop() ++ so that it handles stack extension blocks properly, before calling ++ sampled_data_sample() which also uses the op stack. ++ */ + /* Check if we are done collecting data. */ + + if (increment_cube_indexes(params, penum->indexes)) { + if (stack_depth_adjust == 0) +- pop(O_STACK_PAD); /* Remove spare stack space */ ++ ref_stack_pop(&o_stack, O_STACK_PAD); /* Remove spare stack space */ + else +- pop(stack_depth_adjust - num_out); ++ ref_stack_pop(&o_stack, stack_depth_adjust - num_out); + /* Execute the closing procedure, if given */ + code = 0; + if (esp_finish_proc != 0) +@@ -554,11 +557,11 @@ sampled_data_continue(i_ctx_t *i_ctx_p) + if ((O_STACK_PAD - stack_depth_adjust) < 0) { + stack_depth_adjust = -(O_STACK_PAD - stack_depth_adjust); + check_op(stack_depth_adjust); +- pop(stack_depth_adjust); ++ ref_stack_pop(&o_stack, stack_depth_adjust); + } + else { + check_ostack(O_STACK_PAD - stack_depth_adjust); +- push(O_STACK_PAD - stack_depth_adjust); ++ ref_stack_push(&o_stack, O_STACK_PAD - stack_depth_adjust); + for (i=0;i<O_STACK_PAD - stack_depth_adjust;i++) + make_null(op - i); + } +-- +2.17.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-28879.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-28879.patch new file mode 100644 index 0000000000..852f2459f7 --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-28879.patch @@ -0,0 +1,54 @@ +From 37ed5022cecd584de868933b5b60da2e995b3179 Mon Sep 17 00:00:00 2001 +From: Ken Sharp <ken.sharp@artifex.com> +Date: Fri, 24 Mar 2023 13:19:57 +0000 +Subject: [PATCH] Graphics library - prevent buffer overrun in (T)BCP encoding + +Bug #706494 "Buffer Overflow in s_xBCPE_process" + +As described in detail in the bug report, if the write buffer is filled +to one byte less than full, and we then try to write an escaped +character, we overrun the buffer because we don't check before +writing two bytes to it. + +This just checks if we have two bytes before starting to write an +escaped character and exits if we don't (replacing the consumed byte +of the input). + +Up for further discussion; why do we even permit a BCP encoding filter +anyway ? I think we should remove this, at least when SAFER is true. + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;h=37ed5022cecd584de868933b5b60da2e995b3179] +CVE: CVE-2023-28879 +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + base/sbcp.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/base/sbcp.c b/base/sbcp.c +index 6b0383c..90784b5 100644 +--- a/base/sbcp.c ++++ b/base/sbcp.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2001-2019 Artifex Software, Inc. ++/* Copyright (C) 2001-2023 Artifex Software, Inc. + All Rights Reserved. + + This software is provided AS-IS with no warranty, either express or +@@ -50,6 +50,14 @@ s_xBCPE_process(stream_state * st, stream_cursor_read * pr, + byte ch = *++p; + + if (ch <= 31 && escaped[ch]) { ++ /* Make sure we have space to store two characters in the write buffer, ++ * if we don't then exit without consuming the input character, we'll process ++ * that on the next time round. ++ */ ++ if (pw->limit - q < 2) { ++ p--; ++ break; ++ } + if (p == rlimit) { + p--; + break; +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-1.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-1.patch new file mode 100644 index 0000000000..a3bbe958eb --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-1.patch @@ -0,0 +1,145 @@ +From 5e65eeae225c7d02d447de5abaf4a8e6d234fcea Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Wed, 7 Jun 2023 10:23:06 +0100 +Subject: [PATCH] Bug 706761: Don't "reduce" %pipe% file names for permission validation + +For regular file names, we try to simplfy relative paths before we use them. + +Because the %pipe% device can, effectively, accept command line calls, we +shouldn't be simplifying that string, because the command line syntax can end +up confusing the path simplifying code. That can result in permitting a pipe +command which does not match what was originally permitted. + +Special case "%pipe" in the validation code so we always deal with the entire +string. + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=505eab7782b429017eb434b2b95120855f2b0e3c] +CVE: CVE-2023-36664 +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + base/gpmisc.c | 31 +++++++++++++++++++-------- + base/gslibctx.c | 56 ++++++++++++++++++++++++++++++++++++------------- + 2 files changed, 64 insertions(+), 23 deletions(-) + +diff --git a/base/gpmisc.c b/base/gpmisc.c +index c4fffae..09ac6b3 100644 +--- a/base/gpmisc.c ++++ b/base/gpmisc.c +@@ -1046,16 +1046,29 @@ gp_validate_path_len(const gs_memory_t *mem, + && !memcmp(path + cdirstrl, dirsepstr, dirsepstrl)) { + prefix_len = 0; + } +- rlen = len+1; +- bufferfull = (char *)gs_alloc_bytes(mem->thread_safe_memory, rlen + prefix_len, "gp_validate_path"); +- if (bufferfull == NULL) +- return gs_error_VMerror; +- +- buffer = bufferfull + prefix_len; +- if (gp_file_name_reduce(path, (uint)len, buffer, &rlen) != gp_combine_success) +- return gs_error_invalidfileaccess; +- buffer[rlen] = 0; + ++ /* "%pipe%" do not follow the normal rules for path definitions, so we ++ don't "reduce" them to avoid unexpected results ++ */ ++ if (len > 5 && memcmp(path, "%pipe", 5) != 0) { ++ bufferfull = buffer = (char *)gs_alloc_bytes(mem->thread_safe_memory, len + 1, "gp_validate_path"); ++ if (buffer == NULL) ++ return gs_error_VMerror; ++ memcpy(buffer, path, len); ++ buffer[len] = 0; ++ rlen = len; ++ } ++ else { ++ rlen = len+1; ++ bufferfull = (char *)gs_alloc_bytes(mem->thread_safe_memory, rlen + prefix_len, "gp_validate_path"); ++ if (bufferfull == NULL) ++ return gs_error_VMerror; ++ ++ buffer = bufferfull + prefix_len; ++ if (gp_file_name_reduce(path, (uint)len, buffer, &rlen) != gp_combine_success) ++ return gs_error_invalidfileaccess; ++ buffer[rlen] = 0; ++ } + while (1) { + switch (mode[0]) + { +diff --git a/base/gslibctx.c b/base/gslibctx.c +index 20c5eee..355c0e3 100644 +--- a/base/gslibctx.c ++++ b/base/gslibctx.c +@@ -719,14 +719,28 @@ gs_add_control_path_len(const gs_memory_t *mem, gs_path_control_t type, const ch + return gs_error_rangecheck; + } + +- rlen = len+1; +- buffer = (char *)gs_alloc_bytes(core->memory, rlen, "gp_validate_path"); +- if (buffer == NULL) +- return gs_error_VMerror; ++ /* "%pipe%" do not follow the normal rules for path definitions, so we ++ don't "reduce" them to avoid unexpected results ++ */ ++ if (len > 5 && memcmp(path, "%pipe", 5) != 0) { ++ buffer = (char *)gs_alloc_bytes(core->memory, len + 1, "gs_add_control_path_len"); ++ if (buffer == NULL) ++ return gs_error_VMerror; ++ memcpy(buffer, path, len); ++ buffer[len] = 0; ++ rlen = len; ++ } ++ else { ++ rlen = len + 1; + +- if (gp_file_name_reduce(path, (uint)len, buffer, &rlen) != gp_combine_success) +- return gs_error_invalidfileaccess; +- buffer[rlen] = 0; ++ buffer = (char *)gs_alloc_bytes(core->memory, rlen, "gs_add_control_path_len"); ++ if (buffer == NULL) ++ return gs_error_VMerror; ++ ++ if (gp_file_name_reduce(path, (uint)len, buffer, &rlen) != gp_combine_success) ++ return gs_error_invalidfileaccess; ++ buffer[rlen] = 0; ++ } + + n = control->num; + for (i = 0; i < n; i++) +@@ -802,14 +816,28 @@ gs_remove_control_path_len(const gs_memory_t *mem, gs_path_control_t type, const + return gs_error_rangecheck; + } + +- rlen = len+1; +- buffer = (char *)gs_alloc_bytes(core->memory, rlen, "gp_validate_path"); +- if (buffer == NULL) +- return gs_error_VMerror; ++ /* "%pipe%" do not follow the normal rules for path definitions, so we ++ don't "reduce" them to avoid unexpected results ++ */ ++ if (len > 5 && memcmp(path, "%pipe", 5) != 0) { ++ buffer = (char *)gs_alloc_bytes(core->memory, len + 1, "gs_remove_control_path_len"); ++ if (buffer == NULL) ++ return gs_error_VMerror; ++ memcpy(buffer, path, len); ++ buffer[len] = 0; ++ rlen = len; ++ } ++ else { ++ rlen = len+1; + +- if (gp_file_name_reduce(path, (uint)len, buffer, &rlen) != gp_combine_success) +- return gs_error_invalidfileaccess; +- buffer[rlen] = 0; ++ buffer = (char *)gs_alloc_bytes(core->memory, rlen, "gs_remove_control_path_len"); ++ if (buffer == NULL) ++ return gs_error_VMerror; ++ ++ if (gp_file_name_reduce(path, (uint)len, buffer, &rlen) != gp_combine_success) ++ return gs_error_invalidfileaccess; ++ buffer[rlen] = 0; ++ } + + n = control->num; + for (i = 0; i < n; i++) { +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-2.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-2.patch new file mode 100644 index 0000000000..e8c42f1deb --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-2.patch @@ -0,0 +1,60 @@ +From fb342fdb60391073a69147cb71af1ac416a81099 Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Wed, 14 Jun 2023 09:08:12 +0100 +Subject: [PATCH] Bug 706778: 706761 revisit + +Two problems with the original commit. The first a silly typo inverting the +logic of a test. + +The second was forgetting that we actually actually validate two candidate +strings for pipe devices. One with the expected "%pipe%" prefix, the other +using the pipe character prefix: "|". + +This addresses both those. + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=fb342fdb60391073a69147cb71af1ac416a81099] +CVE: CVE-2023-36664 +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + base/gpmisc.c | 2 +- + base/gslibctx.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/base/gpmisc.c b/base/gpmisc.c +index 09ac6b3..01d449f 100644 +--- a/base/gpmisc.c ++++ b/base/gpmisc.c +@@ -1050,7 +1050,7 @@ gp_validate_path_len(const gs_memory_t *mem, + /* "%pipe%" do not follow the normal rules for path definitions, so we + don't "reduce" them to avoid unexpected results + */ +- if (len > 5 && memcmp(path, "%pipe", 5) != 0) { ++ if (path[0] == '|' || (len > 5 && memcmp(path, "%pipe", 5) == 0)) { + bufferfull = buffer = (char *)gs_alloc_bytes(mem->thread_safe_memory, len + 1, "gp_validate_path"); + if (buffer == NULL) + return gs_error_VMerror; +diff --git a/base/gslibctx.c b/base/gslibctx.c +index 355c0e3..d8f74a3 100644 +--- a/base/gslibctx.c ++++ b/base/gslibctx.c +@@ -722,7 +722,7 @@ gs_add_control_path_len(const gs_memory_t *mem, gs_path_control_t type, const ch + /* "%pipe%" do not follow the normal rules for path definitions, so we + don't "reduce" them to avoid unexpected results + */ +- if (len > 5 && memcmp(path, "%pipe", 5) != 0) { ++ if (path[0] == '|' || (len > 5 && memcmp(path, "%pipe", 5) == 0)) { + buffer = (char *)gs_alloc_bytes(core->memory, len + 1, "gs_add_control_path_len"); + if (buffer == NULL) + return gs_error_VMerror; +@@ -819,7 +819,7 @@ gs_remove_control_path_len(const gs_memory_t *mem, gs_path_control_t type, const + /* "%pipe%" do not follow the normal rules for path definitions, so we + don't "reduce" them to avoid unexpected results + */ +- if (len > 5 && memcmp(path, "%pipe", 5) != 0) { ++ if (path[0] == '|' || (len > 5 && memcmp(path, "%pipe", 5) == 0)) { + buffer = (char *)gs_alloc_bytes(core->memory, len + 1, "gs_remove_control_path_len"); + if (buffer == NULL) + return gs_error_VMerror; +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-pre1.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-pre1.patch new file mode 100644 index 0000000000..662736bb3d --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-36664-pre1.patch @@ -0,0 +1,62 @@ +From 4ceaf92815302863a8c86fcfcf2347e0118dd3a5 Mon Sep 17 00:00:00 2001 +From: Ray Johnston <ray.johnston@artifex.com> +Date: Tue, 22 Sep 2020 13:10:04 -0700 +Subject: [PATCH] Fix gp_file allocations to use thread_safe_memory. + +The gpmisc.c does allocations for gp_file objects and buffers used by +gp_fprintf, as well as gp_validate_path_len. The helgrind run with +-dBGPrint -dNumRenderingThreads=4 and PCL input showed up the gp_fprintf +problem since the clist rendering would call gp_fprintf using the same +allocator (PCL's chunk allocator which is non_gc_memory). The chunk +allocator is intentionally not thread safe (for performance). + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=4ceaf92815302863a8c86fcfcf2347e0118dd3a5] +CVE: CVE-2023-36664 #Dependency Patch1 +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + base/gpmisc.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/base/gpmisc.c b/base/gpmisc.c +index 34cd71f..c4fffae 100644 +--- a/base/gpmisc.c ++++ b/base/gpmisc.c +@@ -435,7 +435,7 @@ generic_pwrite(gp_file *f, size_t count, gs_offset_t offset, const void *buf) + + gp_file *gp_file_alloc(gs_memory_t *mem, const gp_file_ops_t *prototype, size_t size, const char *cname) + { +- gp_file *file = (gp_file *)gs_alloc_bytes(mem->non_gc_memory, size, cname ? cname : "gp_file"); ++ gp_file *file = (gp_file *)gs_alloc_bytes(mem->thread_safe_memory, size, cname ? cname : "gp_file"); + if (file == NULL) + return NULL; + +@@ -449,7 +449,7 @@ gp_file *gp_file_alloc(gs_memory_t *mem, const gp_file_ops_t *prototype, size_t + memset(((char *)file)+sizeof(*prototype), + 0, + size - sizeof(*prototype)); +- file->memory = mem->non_gc_memory; ++ file->memory = mem->thread_safe_memory; + + return file; + } +@@ -1047,7 +1047,7 @@ gp_validate_path_len(const gs_memory_t *mem, + prefix_len = 0; + } + rlen = len+1; +- bufferfull = (char *)gs_alloc_bytes(mem->non_gc_memory, rlen + prefix_len, "gp_validate_path"); ++ bufferfull = (char *)gs_alloc_bytes(mem->thread_safe_memory, rlen + prefix_len, "gp_validate_path"); + if (bufferfull == NULL) + return gs_error_VMerror; + +@@ -1093,7 +1093,7 @@ gp_validate_path_len(const gs_memory_t *mem, + break; + } + +- gs_free_object(mem->non_gc_memory, bufferfull, "gp_validate_path"); ++ gs_free_object(mem->thread_safe_memory, bufferfull, "gp_validate_path"); + #ifdef EACCES + if (code == gs_error_invalidfileaccess) + errno = EACCES; +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-43115.patch b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-43115.patch new file mode 100644 index 0000000000..3acb8a503c --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/CVE-2023-43115.patch @@ -0,0 +1,62 @@ +From 8b0f20002536867bd73ff4552408a72597190cbe Mon Sep 17 00:00:00 2001 +From: Ken Sharp <ken.sharp@artifex.com> +Date: Thu, 24 Aug 2023 15:24:35 +0100 +Subject: [PATCH] IJS device - try and secure the IJS server startup + +Bug #707051 ""ijs" device can execute arbitrary commands" + +The problem is that the 'IJS' device needs to start the IJS server, and +that is indeed an arbitrary command line. There is (apparently) no way +to validate it. Indeed, this is covered quite clearly in the comments +at the start of the source: + + * WARNING: The ijs server can be selected on the gs command line + * which is a security risk, since any program can be run. + +Previously this used the awful LockSafetyParams hackery, which we +abandoned some time ago because it simply couldn't be made secure (it +was implemented in PostScript and was therefore vulnerable to PostScript +programs). + +This commit prevents PostScript programs switching to the IJS device +after SAFER has been activated, and prevents changes to the IjsServer +parameter after SAFER has been activated. + +SAFER is activated, unless explicitly disabled, before any user +PostScript is executed which means that the device and the server +invocation can only be configured on the command line. This does at +least provide minimal security against malicious PostScript programs. + +Upstream-Status: Backport [https://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=e59216049cac290fb437a04c4f41ea46826cfba5] +CVE: CVE-2023-43115 +Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> +--- + devices/gdevijs.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/devices/gdevijs.c b/devices/gdevijs.c +index 3d337c5..e50d69f 100644 +--- a/devices/gdevijs.c ++++ b/devices/gdevijs.c +@@ -934,6 +934,9 @@ gsijs_finish_copydevice(gx_device *dev, const gx_device *from_dev) + static const char rgb[] = "DeviceRGB"; + gx_device_ijs *ijsdev = (gx_device_ijs *)dev; + ++ if (ijsdev->memory->gs_lib_ctx->core->path_control_active) ++ return_error(gs_error_invalidaccess); ++ + code = gx_default_finish_copydevice(dev, from_dev); + if(code < 0) + return code; +@@ -1363,7 +1366,7 @@ gsijs_put_params(gx_device *dev, gs_param_list *plist) + if (code >= 0) + code = gsijs_read_string(plist, "IjsServer", + ijsdev->IjsServer, sizeof(ijsdev->IjsServer), +- dev->LockSafetyParams, is_open); ++ ijsdev->memory->gs_lib_ctx->core->path_control_active, is_open); + + if (code >= 0) + code = gsijs_read_string_malloc(plist, "DeviceManufacturer", +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/aarch64/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/aarch64/objarch.h deleted file mode 100644 index a05de29def..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/aarch64/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/arm/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/arm/objarch.h deleted file mode 100644 index e8772cd958..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/arm/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/armeb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/armeb/objarch.h deleted file mode 100644 index 359097f356..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/armeb/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 1 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/check-stack-limits-after-function-evalution.patch b/meta/recipes-extended/ghostscript/ghostscript/check-stack-limits-after-function-evalution.patch new file mode 100644 index 0000000000..77eec7d158 --- /dev/null +++ b/meta/recipes-extended/ghostscript/ghostscript/check-stack-limits-after-function-evalution.patch @@ -0,0 +1,51 @@ +From 7861fcad13c497728189feafb41cd57b5b50ea25 Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.liddell@artifex.com> +Date: Fri, 12 Feb 2021 10:34:23 +0000 +Subject: [PATCH] oss-fuzz 30715: Check stack limits after function evaluation. + +During function result sampling, after the callout to the Postscript +interpreter, make sure there is enough stack space available before pushing +or popping entries. + +In thise case, the Postscript procedure for the "function" is totally invalid +(as a function), and leaves the op stack in an unrecoverable state (as far as +function evaluation is concerned). We end up popping more entries off the +stack than are available. + +To cope, add in stack limit checking to throw an appropriate error when this +happens. +CVE: CVE-2021-45944 +Upstream-Status: Backported [https://git.ghostscript.com/?p=ghostpdl.git;a=patch;h=7861fcad13c497728189feafb41cd57b5b50ea25] +Signed-off-by: Minjae Kim <flowergom@gmail.com> +--- + psi/zfsample.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/psi/zfsample.c b/psi/zfsample.c +index 290809405..652ae02c6 100644 +--- a/psi/zfsample.c ++++ b/psi/zfsample.c +@@ -551,9 +551,17 @@ sampled_data_continue(i_ctx_t *i_ctx_p) + } else { + if (stack_depth_adjust) { + stack_depth_adjust -= num_out; +- push(O_STACK_PAD - stack_depth_adjust); +- for (i=0;i<O_STACK_PAD - stack_depth_adjust;i++) +- make_null(op - i); ++ if ((O_STACK_PAD - stack_depth_adjust) < 0) { ++ stack_depth_adjust = -(O_STACK_PAD - stack_depth_adjust); ++ check_op(stack_depth_adjust); ++ pop(stack_depth_adjust); ++ } ++ else { ++ check_ostack(O_STACK_PAD - stack_depth_adjust); ++ push(O_STACK_PAD - stack_depth_adjust); ++ for (i=0;i<O_STACK_PAD - stack_depth_adjust;i++) ++ make_null(op - i); ++ } + } + } + +-- +2.25.1 + diff --git a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch b/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch deleted file mode 100644 index 7b70bb8e2c..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/ghostscript-9.02-genarch.patch +++ /dev/null @@ -1,38 +0,0 @@ -From c076d0fc970f190f723018258790c79b59daba2e Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Sat, 11 May 2019 21:20:27 +0800 -Subject: [PATCH] not generate objarch.h at compile time - -Import patch from windriver linux for cross compilation, and split -patches into oe way under different directories such as i586, powerpc etc -according to Richard's opinion. - -Upstream-Status: Pending - -Signed-off-by: Kang Kai <kai.kang@windriver.com> -Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> - -Rebase to 9.27 -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> ---- - base/lib.mak | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/base/lib.mak b/base/lib.mak -index 3ed088a..5af2b43 100644 ---- a/base/lib.mak -+++ b/base/lib.mak -@@ -87,8 +87,8 @@ arch_h=$(GLGEN)arch.h - stdpre_h=$(GLSRC)stdpre.h - stdint__h=$(GLSRC)stdint_.h - --$(GLGEN)arch.h : $(GENARCH_XE) -- $(EXP)$(GENARCH_XE) $(GLGEN)arch.h $(TARGET_ARCH_FILE) -+##$(GLGEN)arch.h : $(GENARCH_XE) -+## $(EXP)$(GENARCH_XE) $(GLGEN)arch.h $(TARGET_ARCH_FILE) - - # Platform interfaces - --- -2.7.4 - diff --git a/meta/recipes-extended/ghostscript/ghostscript/i586/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/i586/objarch.h deleted file mode 100644 index 5817b7a6d7..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/i586/objarch.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 4 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 - diff --git a/meta/recipes-extended/ghostscript/ghostscript/i686 b/meta/recipes-extended/ghostscript/ghostscript/i686 deleted file mode 120000 index 87aaca5903..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/i686 +++ /dev/null @@ -1 +0,0 @@ -i586
\ No newline at end of file diff --git a/meta/recipes-extended/ghostscript/ghostscript/microblaze/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/microblaze/objarch.h deleted file mode 100644 index 63232fdfa6..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/microblaze/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 4 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 1 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/microblazeel/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/microblazeel/objarch.h deleted file mode 100644 index 3ec8101681..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/microblazeel/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 4 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32eb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32eb/objarch.h deleted file mode 100644 index 0d0a16bfa3..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32eb/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 1 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32el/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32el/objarch.h deleted file mode 100644 index a05de29def..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn32el/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64eb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64eb/objarch.h deleted file mode 100644 index 0d0a16bfa3..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64eb/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 1 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64el/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64el/objarch.h deleted file mode 100644 index a05de29def..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/mipsarchn64el/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32eb/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32eb/objarch.h deleted file mode 100644 index b8b637cca2..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32eb/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 4 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 1 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32el/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32el/objarch.h deleted file mode 100644 index 29f90ddf85..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/mipsarcho32el/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 4 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/nios2/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/nios2/objarch.h deleted file mode 100644 index 3ec8101681..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/nios2/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 4 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/powerpc/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/powerpc/objarch.h deleted file mode 100644 index 359097f356..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/powerpc/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 4 -#define ARCH_ALIGN_PTR_MOD 4 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 2 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 4 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 1 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/powerpc64/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/powerpc64/objarch.h deleted file mode 100644 index 0d0a16bfa3..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/powerpc64/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 1 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/powerpc64le/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/powerpc64le/objarch.h deleted file mode 100644 index a05de29def..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/powerpc64le/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 diff --git a/meta/recipes-extended/ghostscript/ghostscript/x86-64/objarch.h b/meta/recipes-extended/ghostscript/ghostscript/x86-64/objarch.h deleted file mode 100644 index a05de29def..0000000000 --- a/meta/recipes-extended/ghostscript/ghostscript/x86-64/objarch.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Parameters derived from machine and compiler architecture. */ -/* This file is generated mechanically by genarch.c. */ - - /* ---------------- Scalar alignments ---------------- */ - -#define ARCH_ALIGN_SHORT_MOD 2 -#define ARCH_ALIGN_INT_MOD 4 -#define ARCH_ALIGN_LONG_MOD 8 -#define ARCH_ALIGN_PTR_MOD 8 -#define ARCH_ALIGN_FLOAT_MOD 4 -#define ARCH_ALIGN_DOUBLE_MOD 8 - - /* ---------------- Scalar sizes ---------------- */ - -#define ARCH_LOG2_SIZEOF_CHAR 0 -#define ARCH_LOG2_SIZEOF_SHORT 1 -#define ARCH_LOG2_SIZEOF_INT 2 -#define ARCH_LOG2_SIZEOF_LONG 3 -#define ARCH_LOG2_SIZEOF_LONG_LONG 3 -#define ARCH_SIZEOF_GX_COLOR_INDEX 8 -#define ARCH_SIZEOF_PTR 8 -#define ARCH_SIZEOF_FLOAT 4 -#define ARCH_SIZEOF_DOUBLE 8 -#define ARCH_FLOAT_MANTISSA_BITS 24 -#define ARCH_DOUBLE_MANTISSA_BITS 53 - - /* ---------------- Unsigned max values ---------------- */ - -#define ARCH_MAX_UCHAR ((unsigned char)0xff + (unsigned char)0) -#define ARCH_MAX_USHORT ((unsigned short)0xffff + (unsigned short)0) -#define ARCH_MAX_UINT ((unsigned int)~0 + (unsigned int)0) -#define ARCH_MAX_ULONG ((unsigned long)~0L + (unsigned long)0) - - /* ---------------- Miscellaneous ---------------- */ - -#define ARCH_IS_BIG_ENDIAN 0 -#define ARCH_PTRS_ARE_SIGNED 0 -#define ARCH_FLOATS_ARE_IEEE 1 -#define ARCH_ARITH_RSHIFT 2 -#define ARCH_DIV_NEG_POS_TRUNCATES 1 |