From 4a4e6adae4c1a0e9ab3b6fad477edfe26c1a2aca Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Tue, 14 Jun 2016 17:06:50 +0100 Subject: Use 'size_t' instead of int as appropriate. This silences the many warnings we get when building for x64 in windows. This does not address any of the warnings we get in thirdparty libraries - in particular harfbuzz. These look (at a quick glance) harmless though. --- source/pdf/pdf-annot-edit.c | 2 +- source/pdf/pdf-appearance.c | 28 ++++++++++++++-------------- source/pdf/pdf-colorspace.c | 2 +- source/pdf/pdf-crypt.c | 16 ++++++++-------- source/pdf/pdf-field.c | 2 +- source/pdf/pdf-font.c | 19 ++++++++++--------- source/pdf/pdf-form.c | 10 +++++----- source/pdf/pdf-object.c | 9 +++++++-- source/pdf/pdf-op-buffer.c | 7 ++++--- source/pdf/pdf-op-run.c | 2 +- source/pdf/pdf-parse.c | 6 +++--- source/pdf/pdf-repair.c | 6 ++++-- source/pdf/pdf-write.c | 28 ++++++++++++++++------------ source/pdf/pdf-xref.c | 21 ++++++++++++--------- 14 files changed, 87 insertions(+), 71 deletions(-) (limited to 'source/pdf') diff --git a/source/pdf/pdf-annot-edit.c b/source/pdf/pdf-annot-edit.c index c8594be1..4d5d924c 100644 --- a/source/pdf/pdf-annot-edit.c +++ b/source/pdf/pdf-annot-edit.c @@ -414,7 +414,7 @@ void pdf_set_free_text_details(fz_context *ctx, pdf_document *doc, pdf_annot *an fz_try(ctx) { unsigned char *da_str; - int da_len; + size_t da_len; fz_rect bounds; find_free_font_name(ctx, form_fonts, nbuf, sizeof(nbuf)); diff --git a/source/pdf/pdf-appearance.c b/source/pdf/pdf-appearance.c index 04a4bc75..5eb9c56b 100644 --- a/source/pdf/pdf-appearance.c +++ b/source/pdf/pdf-appearance.c @@ -403,8 +403,8 @@ typedef struct text_splitter_s float y_orig; float x; float x_end; - int text_start; - int text_end; + size_t text_start; + size_t text_end; int max_lines; int retry; } text_splitter; @@ -445,8 +445,8 @@ static int text_splitter_layout(fz_context *ctx, text_splitter *splitter) char *text; float room; float stride; - int count; - int len; + size_t count; + size_t len; float fontsize = splitter->info->da_rec.font_size; splitter->x = splitter->x_end; @@ -594,9 +594,9 @@ static void fzbuf_print_text_end(fz_context *ctx, fz_buffer *fzbuf) fz_buffer_printf(ctx, fzbuf, fmt_EMC); } -static void fzbuf_print_text_word(fz_context *ctx, fz_buffer *fzbuf, float x, float y, char *text, int count) +static void fzbuf_print_text_word(fz_context *ctx, fz_buffer *fzbuf, float x, float y, char *text, size_t count) { - int i; + size_t i; fz_buffer_printf(ctx, fzbuf, fmt_Td, x, y); fz_buffer_printf(ctx, fzbuf, "("); @@ -677,7 +677,7 @@ static fz_buffer *create_text_appearance(fz_context *ctx, pdf_document *doc, con { float x, y; char *word = text+splitter.text_start; - int wordlen = splitter.text_end-splitter.text_start; + size_t wordlen = splitter.text_end-splitter.text_start; text_splitter_move(&splitter, -line, &x, &y); fzbuf_print_text_word(ctx, fztmp, x, y, word, wordlen); @@ -857,7 +857,7 @@ static int get_matrix(fz_context *ctx, pdf_document *doc, pdf_xobject *form, int static char *to_font_encoding(fz_context *ctx, pdf_font_desc *font, char *utf8) { - int i; + size_t i; int needs_converting = 0; /* Temporary partial solution. We are using a slow lookup in the conversion @@ -894,7 +894,7 @@ static char *to_font_encoding(fz_context *ctx, pdf_font_desc *font, char *utf8) /* If found store the cid */ if (i < font->cid_to_ucs_len) - *bufp++ = i; + *bufp++ = (char)i; } else { @@ -1027,7 +1027,7 @@ static void update_marked_content(fz_context *ctx, pdf_document *doc, pdf_xobjec fz_stream *str_outer = NULL; fz_stream *str_inner = NULL; unsigned char *buf; - int len; + size_t len; fz_buffer *newbuf = NULL; pdf_lexbuf_init(ctx, &lbuf, PDF_LEXBUF_SMALL); @@ -1351,7 +1351,7 @@ void pdf_update_listbox_appearance(fz_context *ctx, pdf_document *doc, pdf_obj * for (i = 0; i < n; i++) { fzbuf_print_text_word(ctx, fzbuf, 0.0, i == 0 ? 0 : -fontsize * - lineheight, opts[i], strlen(opts[i])); + lineheight, opts[i], (int)strlen(opts[i])); } fzbuf_print_text_end(ctx, fzbuf); update_marked_content(ctx, doc, form, fzbuf); @@ -1904,7 +1904,7 @@ void pdf_update_ink_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *an } } -static void add_text(fz_context *ctx, font_info *font_rec, fz_text *text, char *str, int str_len, const fz_matrix *tm_) +static void add_text(fz_context *ctx, font_info *font_rec, fz_text *text, char *str, size_t str_len, const fz_matrix *tm_) { fz_font *font = font_rec->font->font; fz_matrix tm = *tm_; @@ -1934,7 +1934,7 @@ static fz_text *layout_text(fz_context *ctx, font_info *font_rec, char *str, flo fz_try(ctx) { - add_text(ctx, font_rec, text, str, strlen(str), &tm); + add_text(ctx, font_rec, text, str, (int)strlen(str), &tm); } fz_catch(ctx) { @@ -1995,7 +1995,7 @@ static fz_text *fit_text(fz_context *ctx, font_info *font_rec, char *str, fz_rec { float dx, dy; char *word = str+splitter.text_start; - int wordlen = splitter.text_end-splitter.text_start; + size_t wordlen = splitter.text_end-splitter.text_start; text_splitter_move(&splitter, -line, &dx, &dy); tm.e += dx; diff --git a/source/pdf/pdf-colorspace.c b/source/pdf/pdf-colorspace.c index b6eec346..c3a8f9dd 100644 --- a/source/pdf/pdf-colorspace.c +++ b/source/pdf/pdf-colorspace.c @@ -210,7 +210,7 @@ load_indexed(fz_context *ctx, pdf_document *doc, pdf_obj *array) fz_try(ctx) { file = pdf_open_stream(ctx, doc, pdf_to_num(ctx, lookupobj), pdf_to_gen(ctx, lookupobj)); - i = fz_read(ctx, file, lookup, n); + i = (int)fz_read(ctx, file, lookup, n); if (i < n) memset(lookup+i, 0, n-i); } diff --git a/source/pdf/pdf-crypt.c b/source/pdf/pdf-crypt.c index bff6510f..d9c34d7f 100644 --- a/source/pdf/pdf-crypt.c +++ b/source/pdf/pdf-crypt.c @@ -353,7 +353,7 @@ static const unsigned char padding[32] = }; static void -pdf_compute_encryption_key(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, int pwlen, unsigned char *key) +pdf_compute_encryption_key(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, size_t pwlen, unsigned char *key) { unsigned char buf[32]; unsigned int p; @@ -422,7 +422,7 @@ pdf_compute_encryption_key(fz_context *ctx, pdf_crypt *crypt, unsigned char *pas */ static void -pdf_compute_encryption_key_r5(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, int pwlen, int ownerkey, unsigned char *validationkey) +pdf_compute_encryption_key_r5(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, size_t pwlen, int ownerkey, unsigned char *validationkey) { unsigned char buffer[128 + 8 + 48]; fz_sha256 sha256; @@ -477,12 +477,12 @@ pdf_compute_encryption_key_r5(fz_context *ctx, pdf_crypt *crypt, unsigned char * */ static void -pdf_compute_hardened_hash_r6(fz_context *ctx, unsigned char *password, int pwlen, unsigned char salt[16], unsigned char *ownerkey, unsigned char hash[32]) +pdf_compute_hardened_hash_r6(fz_context *ctx, unsigned char *password, size_t pwlen, unsigned char salt[16], unsigned char *ownerkey, unsigned char hash[32]) { unsigned char data[(128 + 64 + 48) * 64]; unsigned char block[64]; int block_size = 32; - int data_len = 0; + size_t data_len = 0; int i, j, sum; fz_sha256 sha256; @@ -545,7 +545,7 @@ pdf_compute_hardened_hash_r6(fz_context *ctx, unsigned char *password, int pwlen } static void -pdf_compute_encryption_key_r6(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, int pwlen, int ownerkey, unsigned char *validationkey) +pdf_compute_encryption_key_r6(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, size_t pwlen, int ownerkey, unsigned char *validationkey) { unsigned char hash[32]; unsigned char iv[16]; @@ -575,7 +575,7 @@ pdf_compute_encryption_key_r6(fz_context *ctx, pdf_crypt *crypt, unsigned char * */ static void -pdf_compute_user_password(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, int pwlen, unsigned char *output) +pdf_compute_user_password(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, size_t pwlen, unsigned char *output) { if (crypt->r == 2) { @@ -636,7 +636,7 @@ pdf_compute_user_password(fz_context *ctx, pdf_crypt *crypt, unsigned char *pass */ static int -pdf_authenticate_user_password(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, int pwlen) +pdf_authenticate_user_password(fz_context *ctx, pdf_crypt *crypt, unsigned char *password, size_t pwlen) { unsigned char output[32]; pdf_compute_user_password(ctx, crypt, password, pwlen, output); @@ -655,7 +655,7 @@ pdf_authenticate_user_password(fz_context *ctx, pdf_crypt *crypt, unsigned char */ static int -pdf_authenticate_owner_password(fz_context *ctx, pdf_crypt *crypt, unsigned char *ownerpass, int pwlen) +pdf_authenticate_owner_password(fz_context *ctx, pdf_crypt *crypt, unsigned char *ownerpass, size_t pwlen) { unsigned char pwbuf[32]; unsigned char key[32]; diff --git a/source/pdf/pdf-field.c b/source/pdf/pdf-field.c index 7e91cb1e..046e3428 100644 --- a/source/pdf/pdf-field.c +++ b/source/pdf/pdf-field.c @@ -17,7 +17,7 @@ pdf_obj *pdf_get_inheritable(fz_context *ctx, pdf_document *doc, pdf_obj *obj, p char *pdf_get_string_or_stream(fz_context *ctx, pdf_document *doc, pdf_obj *obj) { - int len = 0; + size_t len = 0; char *buf = NULL; fz_buffer *stmbuf = NULL; char *text = NULL; diff --git a/source/pdf/pdf-font.c b/source/pdf/pdf-font.c index 574519fd..eab26139 100644 --- a/source/pdf/pdf-font.c +++ b/source/pdf/pdf-font.c @@ -182,7 +182,7 @@ static int ft_cid_to_gid(pdf_font_desc *fontdesc, int cid) return ft_char_index(fontdesc->font->ft_face, cid); } - if (fontdesc->cid_to_gid && cid < fontdesc->cid_to_gid_len && cid >= 0) + if (fontdesc->cid_to_gid && (size_t)cid < fontdesc->cid_to_gid_len && cid >= 0) return fontdesc->cid_to_gid[cid]; return cid; @@ -962,14 +962,15 @@ load_cid_font(fz_context *ctx, pdf_document *doc, pdf_obj *dict, pdf_obj *encodi if (pdf_is_indirect(ctx, cidtogidmap)) { fz_buffer *buf; + size_t z; buf = pdf_load_stream(ctx, doc, pdf_to_num(ctx, cidtogidmap), pdf_to_gen(ctx, cidtogidmap)); fontdesc->cid_to_gid_len = (buf->len) / 2; fontdesc->cid_to_gid = fz_malloc_array(ctx, fontdesc->cid_to_gid_len, sizeof(unsigned short)); fontdesc->size += fontdesc->cid_to_gid_len * sizeof(unsigned short); - for (i = 0; i < fontdesc->cid_to_gid_len; i++) - fontdesc->cid_to_gid[i] = (buf->data[i * 2] << 8) + buf->data[i * 2 + 1]; + for (z = 0; z < fontdesc->cid_to_gid_len; z++) + fontdesc->cid_to_gid[z] = (buf->data[z * 2] << 8) + buf->data[z * 2 + 1]; fz_drop_buffer(ctx, buf); } @@ -1338,9 +1339,9 @@ pdf_print_font(fz_context *ctx, fz_output *out, pdf_font_desc *fontdesc) } } -fz_rect *pdf_measure_text(fz_context *ctx, pdf_font_desc *fontdesc, unsigned char *buf, int len, fz_rect *acc) +fz_rect *pdf_measure_text(fz_context *ctx, pdf_font_desc *fontdesc, unsigned char *buf, size_t len, fz_rect *acc) { - int i; + size_t i; int w = 0; for (i = 0; i < len; i++) @@ -1354,10 +1355,10 @@ fz_rect *pdf_measure_text(fz_context *ctx, pdf_font_desc *fontdesc, unsigned cha return acc; } -float pdf_text_stride(fz_context *ctx, pdf_font_desc *fontdesc, float fontsize, unsigned char *buf, int len, float room, int *count) +float pdf_text_stride(fz_context *ctx, pdf_font_desc *fontdesc, float fontsize, unsigned char *buf, size_t len, float room, size_t *count) { pdf_hmtx h; - int i = 0; + size_t i = 0; float x = 0.0; while(i < len) @@ -1398,12 +1399,12 @@ pdf_add_font_file(fz_context *ctx, pdf_document *doc, fz_font *font) fz_try(ctx) { obj = pdf_new_dict(ctx, doc, 3); - pdf_dict_put_drop(ctx, obj, PDF_NAME_Length1, pdf_new_int(ctx, doc, buf->len)); + pdf_dict_put_drop(ctx, obj, PDF_NAME_Length1, pdf_new_int(ctx, doc, (int)buf->len)); switch (ft_font_file_kind(font->ft_face)) { case 1: /* TODO: these may not be the correct values, but I doubt it matters */ - pdf_dict_put_drop(ctx, obj, PDF_NAME_Length2, pdf_new_int(ctx, doc, buf->len)); + pdf_dict_put_drop(ctx, obj, PDF_NAME_Length2, pdf_new_int(ctx, doc, (int)buf->len)); pdf_dict_put_drop(ctx, obj, PDF_NAME_Length3, pdf_new_int(ctx, doc, 0)); break; case 2: diff --git a/source/pdf/pdf-form.c b/source/pdf/pdf-form.c index 928742ad..09b51d24 100644 --- a/source/pdf/pdf-form.c +++ b/source/pdf/pdf-form.c @@ -116,7 +116,7 @@ pdf_obj *pdf_lookup_field(fz_context *ctx, pdf_obj *form, char *name) { namep = dot + 1; dot = strchr(namep, '.'); - len = dot ? dot - namep : strlen(namep); + len = dot ? dot - namep : (int)strlen(namep); dict = find_field(ctx, form, namep, len); if (dot) form = pdf_dict_get(ctx, dict, PDF_NAME_Kids); @@ -1028,7 +1028,7 @@ static char *get_field_name(fz_context *ctx, pdf_document *doc, pdf_obj *field, char *res = NULL; pdf_obj *parent = pdf_dict_get(ctx, field, PDF_NAME_Parent); char *lname = pdf_to_str_buf(ctx, pdf_dict_get(ctx, field, PDF_NAME_T)); - int llen = strlen(lname); + int llen = (int)strlen(lname); /* * If we found a name at this point in the field hierarchy @@ -1127,7 +1127,7 @@ void pdf_field_set_text_color(fz_context *ctx, pdf_document *doc, pdf_obj *field fz_buffer *fzbuf = NULL; char *da = pdf_to_str_buf(ctx, pdf_get_inheritable(ctx, doc, field, PDF_NAME_DA)); unsigned char *buf; - int len; + size_t len; pdf_obj *daobj = NULL; memset(&di, 0, sizeof(di)); @@ -1137,12 +1137,12 @@ void pdf_field_set_text_color(fz_context *ctx, pdf_document *doc, pdf_obj *field fz_var(daobj); fz_try(ctx) { - int i; + size_t i; pdf_parse_da(ctx, da, &di); di.col_size = pdf_array_len(ctx, col); - len = fz_mini(di.col_size, nelem(di.col)); + len = fz_mini(di.col_size, (int)nelem(di.col)); for (i = 0; i < len; i++) di.col[i] = pdf_to_real(ctx, pdf_array_get(ctx, col, i)); diff --git a/source/pdf/pdf-object.c b/source/pdf/pdf-object.c index f2e4551f..fcb9f328 100644 --- a/source/pdf/pdf-object.c +++ b/source/pdf/pdf-object.c @@ -142,14 +142,19 @@ pdf_new_real(fz_context *ctx, pdf_document *doc, float f) } pdf_obj * -pdf_new_string(fz_context *ctx, pdf_document *doc, const char *str, int len) +pdf_new_string(fz_context *ctx, pdf_document *doc, const char *str, size_t len) { pdf_obj_string *obj; + unsigned short l = (unsigned short)len; + + if ((size_t)l != len) + fz_throw(ctx, FZ_ERROR_GENERIC, "Overflow in pdf string"); + obj = Memento_label(fz_malloc(ctx, offsetof(pdf_obj_string, buf) + len + 1), "pdf_obj(string)"); obj->super.refs = 1; obj->super.kind = PDF_STRING; obj->super.flags = 0; - obj->len = len; + obj->len = l; memcpy(obj->buf, str, len); obj->buf[len] = '\0'; return &obj->super; diff --git a/source/pdf/pdf-op-buffer.c b/source/pdf/pdf-op-buffer.c index 163848a0..5b37e6a5 100644 --- a/source/pdf/pdf-op-buffer.c +++ b/source/pdf/pdf-op-buffer.c @@ -664,12 +664,13 @@ pdf_out_BI(fz_context *ctx, pdf_processor *proc, fz_image *img) fz_printf(ctx, out, "ID\n"); if (ahx) { - for (i = 0; i < buf->len; ++i) + size_t z; + for (z = 0; z < buf->len; ++z) { - int c = buf->data[i]; + int c = buf->data[z]; fz_putc(ctx, out, "0123456789abcdef"[(c >> 4) & 0xf]); fz_putc(ctx, out, "0123456789abcdef"[c & 0xf]); - if ((i & 31) == 31) + if ((z & 31) == 31) fz_putc(ctx, out, '\n'); } fz_putc(ctx, out, '>'); diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c index 03b45725..ca21508e 100644 --- a/source/pdf/pdf-op-run.c +++ b/source/pdf/pdf-op-run.c @@ -889,7 +889,7 @@ pdf_show_char(fz_context *ctx, pdf_run_processor *pr, int cid) ucslen = 0; if (fontdesc->to_unicode) ucslen = pdf_lookup_cmap_full(fontdesc->to_unicode, cid, ucsbuf); - if (ucslen == 0 && cid < fontdesc->cid_to_ucs_len) + if (ucslen == 0 && (size_t)cid < fontdesc->cid_to_ucs_len) { ucsbuf[0] = fontdesc->cid_to_ucs[cid]; ucslen = 1; diff --git a/source/pdf/pdf-parse.c b/source/pdf/pdf-parse.c index ddfd5fff..cfedd67b 100644 --- a/source/pdf/pdf-parse.c +++ b/source/pdf/pdf-parse.c @@ -52,10 +52,10 @@ pdf_to_utf8(fz_context *ctx, pdf_document *doc, pdf_obj *src) fz_buffer *stmbuf = NULL; unsigned char *srcptr; char *dstptr, *dst; - int srclen; - int dstlen = 0; + size_t srclen; + size_t dstlen = 0; int ucs; - int i; + size_t i; fz_var(stmbuf); fz_try(ctx) diff --git a/source/pdf/pdf-repair.c b/source/pdf/pdf-repair.c index af886d6d..08b82a3e 100644 --- a/source/pdf/pdf-repair.c +++ b/source/pdf/pdf-repair.c @@ -281,7 +281,9 @@ pdf_repair_xref(fz_context *ctx, pdf_document *doc) int stm_len; pdf_token tok; int next; - int i, n, c; + int i; + size_t j, n; + int c; pdf_lexbuf *buf = &doc->lexbuf.base; int num_roots = 0; int max_roots = 0; @@ -316,7 +318,7 @@ pdf_repair_xref(fz_context *ctx, pdf_document *doc) n = fz_read(ctx, doc->file, (unsigned char *)buf->scratch, fz_mini(buf->size, 1024)); fz_seek(ctx, doc->file, 0, 0); - for (i = 0; i < n - 4; i++) + for (j = 0; j < n - 4; j++) { if (memcmp(&buf->scratch[i], "%PDF", 4) == 0) { diff --git a/source/pdf/pdf-write.c b/source/pdf/pdf-write.c index b6e37d39..8d0f6f58 100644 --- a/source/pdf/pdf-write.c +++ b/source/pdf/pdf-write.c @@ -694,7 +694,7 @@ static void removeduplicateobjs(fz_context *ctx, pdf_document *doc, pdf_write_st fz_try(ctx) { unsigned char *dataa, *datab; - int lena, lenb; + size_t lena, lenb; sa = pdf_load_raw_renumbered_stream(ctx, doc, num, 0, num, 0); sb = pdf_load_raw_renumbered_stream(ctx, doc, other, 0, other, 0); lena = fz_buffer_storage(ctx, sa, &dataa); @@ -1530,14 +1530,14 @@ static inline int isbinary(int c) static int isbinarystream(fz_buffer *buf) { - int i; + size_t i; for (i = 0; i < buf->len; i++) if (isbinary(buf->data[i])) return 1; return 0; } -static fz_buffer *hexbuf(fz_context *ctx, unsigned char *p, int n) +static fz_buffer *hexbuf(fz_context *ctx, unsigned char *p, size_t n) { static const char hex[17] = "0123456789abcdef"; fz_buffer *buf; @@ -1614,15 +1614,19 @@ static void addhexfilter(fz_context *ctx, pdf_document *doc, pdf_obj *dict) } -static fz_buffer *deflatebuf(fz_context *ctx, unsigned char *p, int n) +static fz_buffer *deflatebuf(fz_context *ctx, unsigned char *p, size_t n) { fz_buffer *buf; uLongf csize; int t; + uLong longN = (uLong)n; + + if (n != (size_t)longN) + fz_throw(ctx, FZ_ERROR_GENERIC, "Buffer to large to deflate"); - buf = fz_new_buffer(ctx, compressBound(n)); - csize = buf->cap; - t = compress(buf->data, &csize, p, n); + buf = fz_new_buffer(ctx, compressBound(longN)); + csize = (uLongf)buf->cap; + t = compress(buf->data, &csize, p, longN); if (t != Z_OK) { fz_drop_buffer(ctx, buf); @@ -1661,7 +1665,7 @@ static void copystream(fz_context *ctx, pdf_document *doc, pdf_write_state *opts addhexfilter(ctx, doc, obj); - newlen = pdf_new_int(ctx, doc, buf->len); + newlen = pdf_new_int(ctx, doc, (int)buf->len); pdf_dict_put(ctx, obj, PDF_NAME_Length, newlen); pdf_drop_obj(ctx, newlen); } @@ -1713,7 +1717,7 @@ static void expandstream(fz_context *ctx, pdf_document *doc, pdf_write_state *op addhexfilter(ctx, doc, obj); } - newlen = pdf_new_int(ctx, doc, buf->len); + newlen = pdf_new_int(ctx, doc, (int)buf->len); pdf_dict_put(ctx, obj, PDF_NAME_Length, newlen); pdf_drop_obj(ctx, newlen); @@ -2436,7 +2440,7 @@ make_page_offset_hints(fz_context *ctx, pdf_document *doc, pdf_write_state *opts /* Pad, and then do shared object hint table */ fz_write_buffer_pad(ctx, buf); - opts->hints_shared_offset = buf->len; + opts->hints_shared_offset = (int)buf->len; /* Table F.5: */ /* Header Item 1: Object number of the first object in the shared @@ -2513,7 +2517,7 @@ make_hint_stream(fz_context *ctx, pdf_document *doc, pdf_write_state *opts) { make_page_offset_hints(ctx, doc, opts, buf); pdf_update_stream(ctx, doc, pdf_load_object(ctx, doc, pdf_xref_len(ctx, doc)-1, 0), buf, 0); - opts->hintstream_len = buf->len; + opts->hintstream_len = (int)buf->len; fz_drop_buffer(ctx, buf); } fz_catch(ctx) @@ -2749,7 +2753,7 @@ static void finalise_write_state(fz_context *ctx, pdf_write_state *opts) static int opteq(const char *a, const char *b) { - int n = strlen(b); + size_t n = strlen(b); return !strncmp(a, b, n) && (a[n] == ',' || a[n] == 0); } diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c index f6f4c292..0365e7a7 100644 --- a/source/pdf/pdf-xref.c +++ b/source/pdf/pdf-xref.c @@ -556,7 +556,7 @@ static void pdf_read_start_xref(fz_context *ctx, pdf_document *doc) { unsigned char buf[1024]; - int i, n; + size_t i, n; fz_off_t t; fz_seek(ctx, doc->file, 0, SEEK_END); @@ -567,8 +567,11 @@ pdf_read_start_xref(fz_context *ctx, pdf_document *doc) fz_seek(ctx, doc->file, t, SEEK_SET); n = fz_read(ctx, doc->file, buf, sizeof buf); + if (n < 9) + fz_throw(ctx, FZ_ERROR_GENERIC, "cannot find startxref"); - for (i = n - 9; i >= 0; i--) + i = n - 9; + do { if (memcmp(buf + i, "startxref", 9) == 0) { @@ -586,7 +589,7 @@ pdf_read_start_xref(fz_context *ctx, pdf_document *doc) return; break; } - } + } while (i-- > 0); fz_throw(ctx, FZ_ERROR_GENERIC, "cannot find startxref"); } @@ -766,7 +769,7 @@ pdf_read_old_xref(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf) fz_off_t ofs; int len; char *s; - int n; + size_t n; pdf_token tok; fz_off_t i; int c; @@ -2225,7 +2228,7 @@ pdf_update_stream(fz_context *ctx, pdf_document *doc, pdf_obj *obj, fz_buffer *n fz_drop_buffer(ctx, x->stm_buf); x->stm_buf = fz_keep_buffer(ctx, newbuf); - pdf_dict_puts_drop(ctx, obj, "Length", pdf_new_int(ctx, doc, newbuf->len)); + pdf_dict_puts_drop(ctx, obj, "Length", pdf_new_int(ctx, doc, (int)newbuf->len)); if (!compressed) { pdf_dict_dels(ctx, obj, "Filter"); @@ -2237,18 +2240,18 @@ int pdf_lookup_metadata(fz_context *ctx, pdf_document *doc, const char *key, char *buf, int size) { if (!strcmp(key, "format")) - return fz_snprintf(buf, size, "PDF %d.%d", doc->version/10, doc->version % 10); + return (int)fz_snprintf(buf, size, "PDF %d.%d", doc->version/10, doc->version % 10); if (!strcmp(key, "encryption")) { if (doc->crypt) - return fz_snprintf(buf, size, "Standard V%d R%d %d-bit %s", + return (int)fz_snprintf(buf, size, "Standard V%d R%d %d-bit %s", pdf_crypt_version(ctx, doc), pdf_crypt_revision(ctx, doc), pdf_crypt_length(ctx, doc), pdf_crypt_method(ctx, doc)); else - return fz_strlcpy(buf, "None", size); + return (int)fz_strlcpy(buf, "None", size); } if (strstr(key, "info:") == key) @@ -2266,7 +2269,7 @@ pdf_lookup_metadata(fz_context *ctx, pdf_document *doc, const char *key, char *b return -1; s = pdf_to_utf8(ctx, doc, info); - n = fz_strlcpy(buf, s, size); + n = (int)fz_strlcpy(buf, s, size); fz_free(ctx, s); return n; } -- cgit v1.2.3