summaryrefslogtreecommitdiff
path: root/psi/zpath1.c
Commit message (Collapse)AuthorAgeFilesLines
* Update postal address in file headersChris Liddell2023-04-041-3/+3
|
* Update copyright to 2021Chris Liddell2021-03-151-1/+1
|
* Update copyright to 2020Chris Liddell2020-04-101-1/+1
|
* Update source/header file copyright notice to 2019Chris Liddell2019-01-161-1/+1
|
* Bug #699707 "Security review bug - continuation procedures"Ken Sharp2018-09-071-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As a result of the recent security review, this bug was raised to go through the PostScript interpreter looking for places where we exit the 'C' level and return control to PostScript. This is done when we need to evaluate something in the PostScript environment, such as a transfer function or a tint transform. Because these functions are written in PostScript we need to run them in the PostScript environment. To do this we push the procedure (or at least 'a' procedure) onto the exec stack and exit with an o_push_estack error. In many cases that's all we need to do, but sometimes we want to return control back to the 'C' environment and, in some of those cases, we want to store some state for the C code. We can't use the operand stack (because the PostScript function will alter that) so we store stuff on the exec stack instead. When we complete the C level, we should restore the exec stack, so if we stored any state on it, we should remove it. Sometimes we were not doing so if there was an error. Generally this did not cause a problem, because in general on an error we would stop. However if the error handler had been altered it was possible we might carry on. 'Sometimes' that would mean we tried to execute something which wasn't executable, and sometimes it might mean that we tried to return to the C level, but without the expected state on the exec stack. This could lead to memory corruption and crashes. This commit tries to find everywhere where we might end up leaving extra items on the exec stack in the case of an error, and either removes the required number of items from the exec stack or uses whatever cleanup routine was established for the C code. Its important to note that, in normal use, none of these could actually cause a problem. This makes it hard to test. all the cases here I have tested, though in many cases the only way I could produce an error was by forcing an error return in the debugger. I suspect some error cases simply aren't possible but its good practice to check the return codes anyway, even if its only a theoretical problem.
* Update copyright notice with new head office address.Ken Sharp2018-01-301-3/+3
| | | | | | | | | Also update copyright dates. Remove gs_cmdl.ps as we no longer use it, and remove its entry from psfiles.htm. Remove xfonts.htm as this feature (xfont support) is long, long gone.
* Make gs_imager_state == gs_state.Chris Liddell2016-06-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change how gstate initialisation is done: Previously we relied on the imager state being a subset of the gstate (thus assigning an imager state to a graphics state over wrote to the entries common to both, and didn't overwrite any already set graphics state specific entries). Making the imager and graphics states the same means that approach doesn't work, so this changes it to initialise the entries individually. Renames gsistate.c->gsgstate.c and gxistate.h->gxgstate.h Cleanup and fix the gs_state gc stuff. Uses different check for pre/post clist pdf14 device Previously, the code used "is_gstate" in the imager/graphics state object to determine if the code was being called pre or post clist (post clist would only ever have had an imager_state so is_gstate = false). With no imager state any more, that test would no longer work (and I am dubious about whether it was really safe, anyway). Other places check for the presence of a clist reader device in the pdf14 device structure - so use that here too. Adds initial (NULL) value for show_gstate pointer in gs_state. Removes the now pointless macro for the contents of the graphics state Changes function names that had "imager" to use "gstate" Removes the redundant 'is_state' flag Cleans up gs_(g)state_putdeviceparams(): Previously we had to similar routines: one took a graphics state, and used the device from the graphics state, the other took an imager state and the device as an explicit parameter. With the removal of the imager state, "merge" those two functions Replaces gs_state with gs_gstate It makes for less confusion as it really is a g(raphics)state
* Commit of build_consolidation branchChris Liddell2015-07-201-0/+300
Squashed into one commit (see branch for details of the evolution of the branch). This brings gpcl6 and gxps into the Ghostscript build system, and a shared set of graphics library object files for all the interpreters. Also, brings the same configuration options to the pcl and xps products as we have for Ghostscript.