From 35bc2ccbb89a6b499e0e3b6f7095afea214f0c59 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 5 May 2019 22:46:40 +0100 Subject: change content get_source_data interfaces to return uint8_t and size_t previously these interfaces returned char * and unsigned int which was undesirable. --- content/content.c | 14 ++++---------- content/content_protected.h | 7 ++++--- content/handlers/css/css.c | 13 +++++++------ content/handlers/html/html.c | 6 +++--- content/handlers/html/html_script.c | 12 ++++++------ content/handlers/image/bmp.c | 4 ++-- content/handlers/image/gif.c | 4 ++-- content/handlers/image/ico.c | 4 ++-- content/handlers/image/jpeg.c | 10 +++++----- content/handlers/image/nssprite.c | 4 ++-- content/handlers/image/png.c | 10 +++++----- content/handlers/image/rsvg.c | 6 +++--- content/handlers/image/svg.c | 17 +++++++++-------- content/handlers/image/webp.c | 8 ++++---- content/handlers/javascript/duktape/dukky.c | 15 ++++++++++++--- content/handlers/javascript/js.h | 2 +- content/handlers/javascript/none/none.c | 2 +- content/handlers/text/textplain.c | 8 +++++--- 18 files changed, 77 insertions(+), 69 deletions(-) (limited to 'content') diff --git a/content/content.c b/content/content.c index bb5c47b33..3a5628096 100644 --- a/content/content.c +++ b/content/content.c @@ -1239,27 +1239,21 @@ int content__get_available_width(struct content *c) /* exported interface documented in content/content.h */ -const char *content_get_source_data(hlcache_handle *h, unsigned long *size) +const uint8_t *content_get_source_data(hlcache_handle *h, size_t *size) { return content__get_source_data(hlcache_handle_get_content(h), size); } /* exported interface documented in content/content_protected.h */ -const char *content__get_source_data(struct content *c, unsigned long *size) +const uint8_t *content__get_source_data(struct content *c, size_t *size) { - const uint8_t *data; - size_t len; - assert(size != NULL); + /** \todo check if the content check should be an assert */ if (c == NULL) return NULL; - data = llcache_handle_get_source_data(c->llcache, &len); - - *size = (unsigned long) len; - - return (const char *) data; + return llcache_handle_get_source_data(c->llcache, size); } /* exported interface documented in content/content.h */ diff --git a/content/content_protected.h b/content/content_protected.h index 99a05cf49..0101790d1 100644 --- a/content/content_protected.h +++ b/content/content_protected.h @@ -17,8 +17,9 @@ * along with this program. If not, see . */ -/** \file - * Content handling (interface). +/** + * \file + * Protected interface to Content handling. * * The content functions manipulate struct contents, which correspond to URLs. */ @@ -255,7 +256,7 @@ int content__get_available_width(struct content *c); * \param size Pointer to location to receive byte size of source. * \return Pointer to source data. */ -const char *content__get_source_data(struct content *c, unsigned long *size); +const uint8_t *content__get_source_data(struct content *c, size_t *size); /** * Invalidate content reuse data. diff --git a/content/handlers/css/css.c b/content/handlers/css/css.c index dda044d15..0dcbe9907 100644 --- a/content/handlers/css/css.c +++ b/content/handlers/css/css.c @@ -80,8 +80,6 @@ typedef struct { * imports array */ } nscss_import_ctx; -static bool nscss_process_data(struct content *c, const char *data, - unsigned int size); static bool nscss_convert(struct content *c); static void nscss_destroy(struct content *c); static nserror nscss_clone(const struct content *old, struct content **newc); @@ -245,7 +243,8 @@ static nserror nscss_create_css_data(struct content_css_data *c, * \param size Number of bytes to process * \return true on success, false on failure */ -bool nscss_process_data(struct content *c, const char *data, unsigned int size) +static bool +nscss_process_data(struct content *c, const char *data, unsigned int size) { nscss_content *css = (nscss_content *) c; css_error error; @@ -374,8 +373,8 @@ nserror nscss_clone(const struct content *old, struct content **newc) { const nscss_content *old_css = (const nscss_content *) old; nscss_content *new_css; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; nserror error; new_css = calloc(1, sizeof(nscss_content)); @@ -402,7 +401,9 @@ nserror nscss_clone(const struct content *old, struct content **newc) data = content__get_source_data(&new_css->base, &size); if (size > 0) { - if (nscss_process_data(&new_css->base, data, size) == false) { + if (nscss_process_data(&new_css->base, + (char *)data, + (unsigned int)size) == false) { content_destroy(&new_css->base); return NSERROR_CLONE_FAILED; } diff --git a/content/handlers/html/html.c b/content/handlers/html/html.c index 4ffdb396a..a7fea6dfe 100644 --- a/content/handlers/html/html.c +++ b/content/handlers/html/html.c @@ -1114,8 +1114,8 @@ html_process_encoding_change(struct content *c, dom_hubbub_parser_params parse_params; dom_hubbub_error error; const char *encoding; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; /* Retrieve new encoding */ encoding = dom_hubbub_parser_get_encoding(html->parser, @@ -1181,7 +1181,7 @@ html_process_encoding_change(struct content *c, * it cannot be changed again. */ error = dom_hubbub_parser_parse_chunk(html->parser, - (const uint8_t *)source_data, + source_data, source_size); return libdom_hubbub_error_to_nserror(error); diff --git a/content/handlers/html/html_script.c b/content/handlers/html/html_script.c index 1affb767c..203dc5089 100644 --- a/content/handlers/html/html_script.c +++ b/content/handlers/html/html_script.c @@ -42,7 +42,7 @@ #include "html/html.h" #include "html/html_internal.h" -typedef bool (script_handler_t)(struct jscontext *jscontext, const char *data, size_t size, const char *name); +typedef bool (script_handler_t)(struct jscontext *jscontext, const uint8_t *data, size_t size, const char *name); static script_handler_t *select_script_handler(content_type ctype) @@ -90,8 +90,8 @@ nserror html_script_exec(html_content *c, bool allow_defer) if (content_get_status(s->data.handle) == CONTENT_STATUS_DONE) { /* external script is now available */ - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; data = content_get_source_data( s->data.handle, &size ); script_handler(c->jscontext, data, size, @@ -305,8 +305,8 @@ convert_script_sync_cb(hlcache_handle *script, script_handler = select_script_handler(content_get_type(s->data.handle)); if (script_handler != NULL && parent->jscontext != NULL) { /* script has a handler */ - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; data = content_get_source_data(s->data.handle, &size ); script_handler(parent->jscontext, data, size, nsurl_access(hlcache_handle_get_url(s->data.handle))); @@ -532,7 +532,7 @@ exec_inline_script(html_content *c, dom_node *node, dom_string *mimetype) if (script_handler != NULL) { script_handler(c->jscontext, - dom_string_data(script), + (const uint8_t *)dom_string_data(script), dom_string_byte_length(script), "?inline script?"); } diff --git a/content/handlers/image/bmp.c b/content/handlers/image/bmp.c index 48a37fb24..75d8880f3 100644 --- a/content/handlers/image/bmp.c +++ b/content/handlers/image/bmp.c @@ -122,8 +122,8 @@ static bool nsbmp_convert(struct content *c) nsbmp_content *bmp = (nsbmp_content *) c; bmp_result res; uint32_t swidth; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; char *title; /* set the bmp data */ diff --git a/content/handlers/image/gif.c b/content/handlers/image/gif.c index 253265caa..ee85a6309 100644 --- a/content/handlers/image/gif.c +++ b/content/handlers/image/gif.c @@ -236,8 +236,8 @@ static bool nsgif_convert(struct content *c) { nsgif_content *gif = (nsgif_content *) c; int res; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; char *title; /* Get the animation */ diff --git a/content/handlers/image/ico.c b/content/handlers/image/ico.c index 85aab9f64..467533376 100644 --- a/content/handlers/image/ico.c +++ b/content/handlers/image/ico.c @@ -120,8 +120,8 @@ static bool nsico_convert(struct content *c) nsico_content *ico = (nsico_content *) c; struct bmp_image *bmp; bmp_result res; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; char *title; /* set the ico data */ diff --git a/content/handlers/image/jpeg.c b/content/handlers/image/jpeg.c index e2f5f8f26..52cdb2201 100644 --- a/content/handlers/image/jpeg.c +++ b/content/handlers/image/jpeg.c @@ -168,8 +168,8 @@ static void nsjpeg_error_exit(j_common_ptr cinfo) static struct bitmap * jpeg_cache_convert(struct content *c) { - uint8_t *source_data; /* Jpeg source data */ - unsigned long source_size; /* length of Jpeg source data */ + const uint8_t *source_data; /* Jpeg source data */ + size_t source_size; /* length of Jpeg source data */ struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; jmp_buf setjmp_buffer; @@ -188,7 +188,7 @@ jpeg_cache_convert(struct content *c) nsjpeg_term_source }; /* obtain jpeg source data and perfom minimal sanity checks */ - source_data = (uint8_t *)content__get_source_data(c, &source_size); + source_data = content__get_source_data(c, &source_size); if ((source_data == NULL) || (source_size < MIN_JPEG_SIZE)) { @@ -315,8 +315,8 @@ static bool nsjpeg_convert(struct content *c) nsjpeg_skip_input_data, jpeg_resync_to_restart, nsjpeg_term_source }; union content_msg_data msg_data; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; char *title; /* check image header is valid and get width/height */ diff --git a/content/handlers/image/nssprite.c b/content/handlers/image/nssprite.c index 269c24356..916bcbd34 100644 --- a/content/handlers/image/nssprite.c +++ b/content/handlers/image/nssprite.c @@ -98,8 +98,8 @@ static bool nssprite_convert(struct content *c) struct rosprite_mem_context* ctx = NULL; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; char *title; data = content__get_source_data(c, &size); diff --git a/content/handlers/image/png.c b/content/handlers/image/png.c index 7a4ce3010..841d5de52 100644 --- a/content/handlers/image/png.c +++ b/content/handlers/image/png.c @@ -367,8 +367,8 @@ static bool nspng_process_data(struct content *c, const char *data, } struct png_cache_read_data_s { - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; }; /** PNG library read fucntion to read data from a memory array @@ -551,8 +551,8 @@ static nserror nspng_clone(const struct content *old_c, struct content **new_c) { nspng_content *clone_png_c; nserror error; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; clone_png_c = calloc(1, sizeof(nspng_content)); if (clone_png_c == NULL) @@ -573,7 +573,7 @@ static nserror nspng_clone(const struct content *old_c, struct content **new_c) data = content__get_source_data(&clone_png_c->base, &size); if (size > 0) { - if (nspng_process_data(&clone_png_c->base, data, size) == false) { + if (nspng_process_data(&clone_png_c->base, (const char *)data, size) == false) { content_destroy(&clone_png_c->base); return NSERROR_NOMEM; } diff --git a/content/handlers/image/rsvg.c b/content/handlers/image/rsvg.c index 2ba1b49f5..ee7373795 100644 --- a/content/handlers/image/rsvg.c +++ b/content/handlers/image/rsvg.c @@ -262,8 +262,8 @@ static nserror rsvg_clone(const struct content *old, struct content **newc) { rsvg_content *svg; nserror error; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; svg = calloc(1, sizeof(rsvg_content)); if (svg == NULL) @@ -284,7 +284,7 @@ static nserror rsvg_clone(const struct content *old, struct content **newc) data = content__get_source_data(&svg->base, &size); if (size > 0) { - if (rsvg_process_data(&svg->base, data, size) == false) { + if (rsvg_process_data(&svg->base, (const char *)data, size) == false) { content_destroy(&svg->base); return NSERROR_NOMEM; } diff --git a/content/handlers/image/svg.c b/content/handlers/image/svg.c index 99722495f..3f4e00c89 100644 --- a/content/handlers/image/svg.c +++ b/content/handlers/image/svg.c @@ -126,8 +126,8 @@ static bool svg_convert(struct content *c) static void svg_reformat(struct content *c, int width, int height) { svg_content *svg = (svg_content *) c; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; assert(svg->diagram); @@ -135,9 +135,12 @@ static void svg_reformat(struct content *c, int width, int height) if (width != svg->current_width || height != svg->current_height) { source_data = content__get_source_data(c, &source_size); - svgtiny_parse(svg->diagram, source_data, source_size, - nsurl_access(content_get_url(c)), - width, height); + svgtiny_parse(svg->diagram, + (const char *)source_data, + source_size, + nsurl_access(content_get_url(c)), + width, + height); svg->current_width = width; svg->current_height = height; @@ -222,7 +225,7 @@ svg_redraw_internal(struct content *c, return false; } } - } + } #undef BGR @@ -361,5 +364,3 @@ static const char *svg_types[] = { CONTENT_FACTORY_REGISTER_TYPES(svg, svg_types, svg_content_handler); - - diff --git a/content/handlers/image/webp.c b/content/handlers/image/webp.c index 66a86c9f4..cbcb5ce55 100644 --- a/content/handlers/image/webp.c +++ b/content/handlers/image/webp.c @@ -88,7 +88,7 @@ static struct bitmap * webp_cache_convert(struct content *c) { const uint8_t *source_data; /* webp source data */ - unsigned long source_size; /* length of webp source data */ + size_t source_size; /* length of webp source data */ VP8StatusCode webpres; WebPBitstreamFeatures webpfeatures; unsigned int bmap_flags; @@ -97,7 +97,7 @@ webp_cache_convert(struct content *c) size_t rowstride; struct bitmap *bitmap = NULL; - source_data = (uint8_t *)content__get_source_data(c, &source_size); + source_data = content__get_source_data(c, &source_size); webpres = WebPGetFeatures(source_data, source_size, &webpfeatures); @@ -156,12 +156,12 @@ webp_cache_convert(struct content *c) static bool webp_convert(struct content *c) { int res; - unsigned long data_size; const uint8_t* data; + size_t data_size; int width; int height; - data = (uint8_t *)content__get_source_data(c, &data_size); + data = content__get_source_data(c, &data_size); res = WebPGetInfo(data, data_size, &width, &height); if (res == 0) { diff --git a/content/handlers/javascript/duktape/dukky.c b/content/handlers/javascript/duktape/dukky.c index d1bd4ec49..e9e579d4d 100644 --- a/content/handlers/javascript/duktape/dukky.c +++ b/content/handlers/javascript/duktape/dukky.c @@ -761,10 +761,16 @@ void dukky_push_generics(duk_context *ctx, const char *generic) /* ..., generic */ } -bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name) +/* exported interface documented in js.h */ +bool +js_exec(jscontext *ctx, const uint8_t *txt, size_t txtlen, const char *name) { assert(ctx); - if (txt == NULL || txtlen == 0) return false; + + if (txt == NULL || txtlen == 0) { + return false; + } + duk_set_top(CTX, 0); NSLOG(dukky, DEEPDEBUG, "Running %"PRIsizet" bytes from %s", txtlen, name); /* NSLOG(dukky, DEEPDEBUG, "\n%s\n", txt); */ @@ -775,7 +781,10 @@ bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name) } else { duk_push_string(CTX, "?unknown source?"); } - if (duk_pcompile_lstring_filename(CTX, DUK_COMPILE_EVAL, txt, txtlen) != 0) { + if (duk_pcompile_lstring_filename(CTX, + DUK_COMPILE_EVAL, + (const char *)txt, + txtlen) != 0) { NSLOG(dukky, INFO, "Failed to compile JavaScript input"); goto handle_error; } diff --git a/content/handlers/javascript/js.h b/content/handlers/javascript/js.h index 89a87afe3..31ab8f766 100644 --- a/content/handlers/javascript/js.h +++ b/content/handlers/javascript/js.h @@ -67,7 +67,7 @@ void js_destroycontext(jscontext *ctx); jsobject *js_newcompartment(jscontext *ctx, void *win_priv, void *doc_priv); /* execute some javascript in a context */ -bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name); +bool js_exec(jscontext *ctx, const uint8_t *txt, size_t txtlen, const char *name); /* fire an event at a dom node */ diff --git a/content/handlers/javascript/none/none.c b/content/handlers/javascript/none/none.c index e1c992ebf..80a9ce49c 100644 --- a/content/handlers/javascript/none/none.c +++ b/content/handlers/javascript/none/none.c @@ -51,7 +51,7 @@ jsobject *js_newcompartment(jscontext *ctx, void *win_priv, void *doc_priv) return NULL; } -bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name) +bool js_exec(jscontext *ctx, const uint8_t *txt, size_t txtlen, const char *name) { return true; } diff --git a/content/handlers/text/textplain.c b/content/handlers/text/textplain.c index 692ba7ebe..9e9e3e9e0 100644 --- a/content/handlers/text/textplain.c +++ b/content/handlers/text/textplain.c @@ -554,8 +554,8 @@ static nserror textplain_clone(const struct content *old, struct content **newc) const textplain_content *old_text = (textplain_content *) old; textplain_content *text; nserror error; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; text = calloc(1, sizeof(textplain_content)); if (text == NULL) @@ -576,7 +576,9 @@ static nserror textplain_clone(const struct content *old, struct content **newc) data = content__get_source_data(&text->base, &size); if (size > 0) { - if (textplain_process_data(&text->base, data, size) == false) { + if (textplain_process_data(&text->base, + (const char *)data, + size) == false) { content_destroy(&text->base); return NSERROR_NOMEM; } -- cgit v1.2.3