commit 6a793481211ba1d88161cb1edfb06668cd968833
parent 5ae2d85a7d48cba02d6aacaaccc2a24bf74a0bf7
Author: Kyle Milz <krwmilz@gmail.com>
Date: Tue, 14 Sep 2021 01:42:30 +0000
add error checking to fseek()
Diffstat:
M | dvi-init.c | | | 34 | +++++++++++++++++++++++----------- |
1 file changed, 23 insertions(+), 11 deletions(-)
diff --git a/dvi-init.c b/dvi-init.c
@@ -28,6 +28,7 @@ NOTE:
\*========================================================================*/
#include <err.h>
+#include <stdio.h> /* fseek() */
#include <X11/Shell.h> /* defines XtNtitle and XtNiconName */
@@ -503,10 +504,12 @@ find_postamble()
ubyte *p1;
ubyte byte;
- fseek(dvi_file, (long) 0, 2);
+ if (fseek(dvi_file, 0, SEEK_END) != 0)
+ err(1, "fseek");
pos = ftell(dvi_file) - TMPSIZ;
if (pos < 0) pos = 0;
- fseek(dvi_file, pos, 0);
+ if (fseek(dvi_file, pos, SEEK_SET) != 0)
+ err(1, "fseek");
p = temp + fread((char *) temp, sizeof(char), TMPSIZ, dvi_file);
for (;;) {
p1 = p;
@@ -521,14 +524,17 @@ find_postamble()
pos += p - temp;
byte = *p;
while (byte == TRAILER) {
- fseek(dvi_file, --pos, 0);
+ if (fseek(dvi_file, --pos, SEEK_SET) != 0)
+ err(1, "fseek");
byte = one(dvi_file);
}
if (byte != 2)
/* Wrong version of DVI output for this program */
return False;
- fseek(dvi_file, pos - 4, 0);
- fseek(dvi_file, sfour(dvi_file), 0);
+ if (fseek(dvi_file, pos - 4, SEEK_SET) != 0)
+ err(1, "fseek");
+ if (fseek(dvi_file, sfour(dvi_file), SEEK_SET) != 0)
+ err(1, "fseek");
return True;
}
@@ -664,7 +670,7 @@ prepare_pages()
{
int i;
- page_info = xmalloc((unsigned) (total_pages + 1) * sizeof *page_info);
+ page_info = xmalloc((unsigned) (total_pages + 1) * sizeof(*page_info));
page_info->pw = unshrunk_paper_w;
page_info->ph = unshrunk_paper_h;
page_info->ww = dvi_unshrunk_page_w;
@@ -673,14 +679,18 @@ prepare_pages()
i = total_pages;
page_info[--i].offset = last_page_offset;
- fseek(dvi_file, last_page_offset, 0);
+ if (fseek(dvi_file, last_page_offset, SEEK_SET) != 0)
+ err(1, "fseek");
/*
* Follow back pointers through pages in the DVI file,
* storing the offsets in the page_info[].offset table.
*/
while (i > 0) {
- fseek(dvi_file, (long) (1+4+(9*4)), 1);
- fseek(dvi_file, page_info[--i].offset = four(dvi_file), 0);
+ if (fseek(dvi_file, (long) (1+4+(9*4)), SEEK_CUR) != 0)
+ err(1, "fseek");
+ if (fseek(dvi_file, page_info[--i].offset = four(dvi_file),
+ SEEK_SET) != 0)
+ err(1, "fseek");
}
}
@@ -749,7 +759,8 @@ init_dvi_file()
goto err;
prepare_pages();
- if (current_page >= total_pages) current_page = total_pages - 1;
+ if (current_page >= total_pages)
+ current_page = total_pages - 1;
warn_spec_now = warn_spec;
init_prescan();
set_titles();
@@ -797,7 +808,8 @@ reload_dvi_file()
for (fontp = font_head; fontp != NULL; fontp = fontp->next)
fontp->flags &= ~FONT_IN_USE;
- fseek(dvi_file, (long) 0, 0);
+ if (fseek(dvi_file, 0, SEEK_SET) != 0)
+ err(1, "fseek");
if (!init_dvi_file())
return False;
if (list_fonts)