Login
Log in using an SSO provider:
Fedora Account System
Red Hat Associate
Red Hat Customer
Login using a Red Hat Bugzilla account
Forgot Password
Create an Account
Red Hat Bugzilla – Attachment 125615 Details for
Bug 182416
CVE-2006-0528 Evolution mail DoS
Home
New
Search
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh92 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
[?]
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Make _cairo_xlib_surface_show_glyphs break things up into chunks.
cairo-xlib-surface-chunk-glyphs-for-max-request.patch (text/plain), 3.72 KB, created by
Carl Worth (Ampere)
on 2006-03-03 19:12:26 UTC
(
hide
)
Description:
Make _cairo_xlib_surface_show_glyphs break things up into chunks.
Filename:
MIME Type:
Creator:
Carl Worth (Ampere)
Created:
2006-03-03 19:12:26 UTC
Size:
3.72 KB
patch
obsolete
>diff-tree 7d498ca91279a4e793d704c5b878f070be4c878f (from 3aac0bf670facd6523e64b3585a93f29da7ffba2) >Author: Carl Worth <cworth@cworth.org> >Date: Fri Mar 3 11:13:36 2006 -0800 > > _cairo_xlib_surface_show_glyphs: Break up rendering into chunks to fit > into X max request length protocol limits. > > This fixes bug #5528: > > _XError from XRenderCompositeText8 > https://bugs.freedesktop.org/show_bug.cgi?id=5528 > >diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c >index e5ffc6e..0efabf4 100644 >--- a/src/cairo-xlib-surface.c >+++ b/src/cairo-xlib-surface.c >@@ -41,6 +41,7 @@ > #include "cairo-xlib-test.h" > #include "cairo-xlib-private.h" > #include <X11/extensions/Xrender.h> >+#include <X11/extensions/renderproto.h> > > /* Xlib doesn't define a typedef, so define one ourselves */ > typedef int (*cairo_xlib_error_func_t) (Display *display, >@@ -2710,7 +2711,9 @@ _cairo_xlib_surface_show_glyphs (cairo_s > cairo_xlib_surface_t *src; > glyphset_cache_t *cache; > cairo_glyph_cache_key_t key; >- glyphset_cache_entry_t **entries; >+ const cairo_glyph_t *glyphs_chunk; >+ glyphset_cache_entry_t **entries, **entries_chunk; >+ int glyphs_remaining, chunk_size, max_chunk_size; > glyphset_cache_entry_t *stack_entries [N_STACK_BUF]; > composite_operation_t operation; > int i; >@@ -2777,26 +2780,46 @@ _cairo_xlib_surface_show_glyphs (cairo_s > /* Call the appropriate sub-function. */ > > _cairo_xlib_surface_ensure_dst_picture (self); >+ >+ max_chunk_size = XMaxRequestSize (self->dpy); > if (elt_size == 8) >+ max_chunk_size -= sz_xRenderCompositeGlyphs8Req; >+ if (elt_size == 16) >+ max_chunk_size -= sz_xRenderCompositeGlyphs16Req; >+ if (elt_size == 32) >+ max_chunk_size -= sz_xRenderCompositeGlyphs32Req; >+ max_chunk_size /= sz_xGlyphElt; >+ >+ for (glyphs_remaining = num_glyphs, glyphs_chunk = glyphs, entries_chunk = entries; >+ glyphs_remaining; >+ glyphs_remaining -= chunk_size, glyphs_chunk += chunk_size, entries_chunk += chunk_size) > { >- status = _cairo_xlib_surface_show_glyphs8 (scaled_font, operator, cache, &key, src, self, >- source_x + attributes.x_offset - dest_x, >- source_y + attributes.y_offset - dest_y, >- glyphs, entries, num_glyphs); >- } >- else if (elt_size == 16) >- { >- status = _cairo_xlib_surface_show_glyphs16 (scaled_font, operator, cache, &key, src, self, >- source_x + attributes.x_offset - dest_x, >- source_y + attributes.y_offset - dest_y, >- glyphs, entries, num_glyphs); >- } >- else >- { >- status = _cairo_xlib_surface_show_glyphs32 (scaled_font, operator, cache, &key, src, self, >- source_x + attributes.x_offset - dest_x, >- source_y + attributes.y_offset - dest_y, >- glyphs, entries, num_glyphs); >+ chunk_size = MIN (glyphs_remaining, max_chunk_size); >+ >+ if (elt_size == 8) >+ { >+ status = _cairo_xlib_surface_show_glyphs8 (scaled_font, operator, cache, &key, src, self, >+ source_x + attributes.x_offset - dest_x, >+ source_y + attributes.y_offset - dest_y, >+ glyphs_chunk, entries_chunk, chunk_size); >+ } >+ else if (elt_size == 16) >+ { >+ status = _cairo_xlib_surface_show_glyphs16 (scaled_font, operator, cache, &key, src, self, >+ source_x + attributes.x_offset - dest_x, >+ source_y + attributes.y_offset - dest_y, >+ glyphs_chunk, entries_chunk, chunk_size); >+ } >+ else >+ { >+ status = _cairo_xlib_surface_show_glyphs32 (scaled_font, operator, cache, &key, src, self, >+ source_x + attributes.x_offset - dest_x, >+ source_y + attributes.y_offset - dest_y, >+ glyphs_chunk, entries_chunk, chunk_size); >+ } >+ >+ if (status != CAIRO_STATUS_SUCCESS) >+ break; > } > > if (status == CAIRO_STATUS_SUCCESS &&
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 182416
:
125028
|
125562
| 125615