diff options
Diffstat (limited to 'source/pdf')
-rw-r--r-- | source/pdf/pdf-annot-edit.c | 2 | ||||
-rw-r--r-- | source/pdf/pdf-appearance.c | 28 | ||||
-rw-r--r-- | source/pdf/pdf-colorspace.c | 2 | ||||
-rw-r--r-- | source/pdf/pdf-crypt.c | 16 | ||||
-rw-r--r-- | source/pdf/pdf-field.c | 2 | ||||
-rw-r--r-- | source/pdf/pdf-font.c | 19 | ||||
-rw-r--r-- | source/pdf/pdf-form.c | 10 | ||||
-rw-r--r-- | source/pdf/pdf-object.c | 9 | ||||
-rw-r--r-- | source/pdf/pdf-op-buffer.c | 7 | ||||
-rw-r--r-- | source/pdf/pdf-op-run.c | 2 | ||||
-rw-r--r-- | source/pdf/pdf-parse.c | 6 | ||||
-rw-r--r-- | source/pdf/pdf-repair.c | 6 | ||||
-rw-r--r-- | source/pdf/pdf-write.c | 28 | ||||
-rw-r--r-- | source/pdf/pdf-xref.c | 21 |
14 files changed, 87 insertions, 71 deletions
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; } |