summaryrefslogtreecommitdiff
path: root/source/pdf
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf')
-rw-r--r--source/pdf/pdf-annot-edit.c2
-rw-r--r--source/pdf/pdf-appearance.c28
-rw-r--r--source/pdf/pdf-colorspace.c2
-rw-r--r--source/pdf/pdf-crypt.c16
-rw-r--r--source/pdf/pdf-field.c2
-rw-r--r--source/pdf/pdf-font.c19
-rw-r--r--source/pdf/pdf-form.c10
-rw-r--r--source/pdf/pdf-object.c9
-rw-r--r--source/pdf/pdf-op-buffer.c7
-rw-r--r--source/pdf/pdf-op-run.c2
-rw-r--r--source/pdf/pdf-parse.c6
-rw-r--r--source/pdf/pdf-repair.c6
-rw-r--r--source/pdf/pdf-write.c28
-rw-r--r--source/pdf/pdf-xref.c21
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;
}